Адаптер кеша 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
);
Caution
Перегрузка 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();