Адаптер кеша Filesystem

Дата оновлення перекладу 2022-10-27

Адаптер кеша Filesystem

Цей адаптер надає покращену продуктивність додатку для тих, хто не може встановити інструменти на кшталт APCu або Redis у своєму середовищі. Він зберігає строк закінчення дії обʼєкта кеша та зміст у вигляді звичайних файлів у колекції каталогів у локально змонтованій файловій системі.

Tip

Продуктивність цього адаптера може бути значно збільшена з використанням тимчасової файлової системи в оперативні памʼяті, на кшатлт tmpfs на Linux, або одного з багатьох інших доступних рішень RAM-диску.

FilesystemAdapter можна опціонально надати простір імен, час життя кеша за замовчуванням та шлях кореню кеша в якості параметрів конструктора:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use Symfony\Component\Cache\Adapter\FilesystemAdapter;

$cache = new FilesystemAdapter(

    // рядок, використоовуваний в якості підкатаолгу кореневого каталогу кеша,
    // де зберігатимуться обʼєкти кеша
    $namespace = '',

    // час життя за замовчуванням (в секундах) для обʼєктів кеша, які не визначають
    // власний час життя, зі значенням 0, що викликає безстрочне зберігання обʼєктів
    // (тобто, поки не будуть видалені файли)
    $defaultLifetime = 0,

    // головний каталог кеша (додатку потрібні права читання та редагування в ньому)
    // якщо він не вказаний, то створюється каталог всередині тимчасового каталогу системи
    $directory = null
);

Caution

Перезавантаження IO файлової системи часто робить цей адаптер одним з найповільниших варіантів. Якщо пропускна здатніссть є найважливішою, то рекомендується використовувати адаптери оперативної памʼяті (Apcu, Memcached, та Redis ) або адаптери DB (Doctrine та PDO).

Note

Починаючи з Symfony 3.4, цей адаптер реалізує PruneableInterface, що дозволяє ручне відсікання прострочених обʼєктів кеша , шляхом виклику його методу prune().

Робота з тегами

Для того, щоб використовувати інвалідацію, засновану на тегах, ви можете обгорнути ваш адаптер у TagAwareAdapter, але часто цікавіше використовувати відповідний FilesystemTagAwareAdapter. Так як логіка інвалідації тегів реалізується за допомогою посилань у файловій системі, цей адаптер пропнує більш читану продуктивність при викокристанні інвалідації, заснованої на тегах:

1
2
3
use Symfony\Component\Cache\Adapter\FilesystemTagAwareAdapter;

$cache = new FilesystemTagAwareAdapter();