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

Дата обновления перевода 2024-06-24

Адаптер кэша 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
);

Warning

Перегрузка IO файловой системы часто делает этот адаптер одним из более медленных вариантов. Если пропускная способность является наиболее важной, то рекомендуется использовать адаптеры оперативной памяти (Apcu, Memcached, и Redis) или адаптеры DB (Doctrine DBAL, PDO)

Note

Этот адаптер реализует PruneableInterface, позволяя ручное отсечение просроченных объектов кэша , путём вызова его метода prune().

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

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

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

$cache = new FilesystemTagAwareAdapter();