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