Laravel

Драйвер файлового кэша Fcache для Laravel

На данный момент меня лично не устраивает фаловый кэш в 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

Valentin Rasulov

Комментариев нет

Чтобы оставить комментарий необходимо авторизоваться