DevCraft Документации
Руководства

Файловый PSR-6 кэш v1.1.0

FileCachePool: ключи с namespace, TTL, clearNamespace, формат на диске.

Введение

С версии 1.1.0 пакет включает файловый PSR-6 pool: Devcraft\Cache\FileCachePool. Он реализует Psr\Cache\CacheItemPoolInterface без Symfony Cache — только файлы и psr/cache.

Предварительные требования

Пошаговое руководство

Создать pool

Второй аргумент — TTL по умолчанию. null или 0 — без истечения, пока item не задал свой expiry.

use Devcraft\Cache\FileCachePool;

$pool = new FileCachePool(sys_get_temp_dir() . '/devtools-cache', defaultTtlSeconds: 3600);

Записать и прочитать

Ключ может содержать / — на диске это подкаталог (Translation/dict…/Translation/dict.cache).

$item = $pool->getItem('Translation/dict');
$item->set(['hello' => 'world']);
$pool->save($item);

$hit = $pool->getItem('Translation/dict');
$value = $hit->isHit() ? $hit->get() : null;

Очистить namespace

clearNamespace() — расширение DevTools (не PSR-6): удаляет все ключи с префиксом {prefix}/.

$pool->clearNamespace('Translation');

Полный пример

use Devcraft\Cache\FileCachePool;

$pool = new FileCachePool('/path/to/cache', defaultTtlSeconds: 3600);

$item = $pool->getItem('Translation/dict');
$item->set(['hello' => 'world']);
$pool->save($item);

$hit = $pool->getItem('Translation/dict');
if ($hit->isHit()) {
    $value = $hit->get();
}

$pool->clearNamespace('Translation'); // DevTools extension (not in PSR-6)

Ключи и хранение

ПравилоДетали
Разрешенобуквы, цифры, / как разделитель namespace
Запрещено{}()\@: и ..
Путь файла{baseDir}/{key}.cache
EnvelopeJSON { "e": expiryUnix|null, "f": "j"|"s", "v": value }

Формат j — JSON-значение; sserialize + base64 для не-JSON данных.

DevCraft Admin

В DevCraft Admin CacheControl — тонкий фасад: setCache($type, $name, $data) → ключ {type}/{name}FileCachePool. Для нового кода предпочтителен CacheControl::pool().

Связанные разделы

На этой странице