На данный момент меня лично не устраивает фаловый кэш в Laravel 4. Как-то я писал под L3, вот решил и в L4 подобное реализовать.
И так несколько часов работы появился на свет пакет Fcache.
Данный драйвер разбрасывает кэш по папкам в зависимости от параметра ключа, так-же можем удалять кеш всей папки. Так-же реализованы связи с помощью тегов, можно удалять кэш по указанным тегам.
Установка
Вы можете установить этот пакет быстро и легко с помощью Composer.
Добавьте в composer.json
запись
"artdevue/fcache": "dev-master"
Выполнить команду в терминале
composer update
Интеграция в Laravel 4
Откройте конфиг приложения app/config/app.php
и в массив providers
добавьте:
'Artdevue\Fcache\FcacheServiceProvider'
Откройте файл запуска app/start/global.php
и добавьте следующие строки.
Cache::extend('fcache', function($app) { $store = new Artdevue\Fcache\Fcache; return new Illuminate\Cache\Repository($store); });
Использование
Откройте конфигурационный файл app/config/cache.php
и измените как указано ниже:
'driver' => 'fcache',
Всё, можно пользоваться.
Все команды идентичны файловому кэшу, за исключением некоторых особенностей, которые мы и рассмотрим.
Для того, чтобы кэш создавался в нужной директории, мы просто разделяем переданный ключ косой чертой (слешем).
Например добавим в кэш данные с ключом folder/onesubfolder/onefile
.
Cache::put('folder/onesubfolder/onefile', 'value', $minutes);
Система создаст вложенную папку folder
в onesubfolder
и файл onefile.cache
folder onesubfolder onefile.cache twofile.cache twosubfolder onefile.cache twofile.cache file.cache
С драйвером файлового кэша Fcache, вы можете легко удалять диретории с кэшем. Для этого вам нужно всего передать ключ.
Для примера удалить кэш folder/onesubfolder/onefile.cache
просто передав ключ:
Cache::forget('folder/onesubfolder/onefile');
А теперь удалим весь кэш в папке onesubfolder
.
Cache::forget('folder/onesubfolder/onefile');
Вы можете сгруппировать ваш кэш по папкам, затем удалить файлы кэша группой.
Использование тегов
Зачастую чтобы связать кэш, распределения по папкам не достаточно. Поэтому реализована поддержка работы с тегами.
Перед тем как писать данные в кэш, мы передаём теги, разделённые запятой. К примеру:
Cache::tags('country,all')->put('key', 'value', $minutes);
или
$value = Cache::tags('users,all')->rememberForever('users', function () { return DB::table('users')->get(); });
Теперь вы можете легко удалить кэш по тегу. Например, чтобы удалить кэш с тегом user
:
Cache::forgetTags('users');
Важно! Если вы хотите удалить кэш с различными тегами, то перечислите их через запятую. Например:
Cache::forgetTags('users,all');
Надеюсь кому-то окажется полезным драйвер кэширования FCache.
Код: https://github.com/artdevue/Fcache
Сообщать об ошибках сюда: https://github.com/artdevue/Fcache/issues
Комментариев нет