Пример использования тегов кэша Laravel в реальном мире
Согласно документации Laravel
Теги кэша позволяют помечать связанные элементы в кеше, а затем сбрасывать все кэшированные значения, которым был назначен данный тег. Вы можете получить доступ к тегированному кешу, передав упорядоченный массив имен тегов. Например, давайте получим доступ к тегированному кешу и поместим значение в кеш:
Cache::tags(['people', 'artists'])->put('John', $john, $minutes);
Cache::tags(['people', 'authors'])->put('Anne', $anne, $minutes);
Чем они полезны?
2 ответа
Именно то, что упоминается в документации. Вы можете сгруппировать свой кеш с помощью тегов, чтобы затем, когда вам это нужно, вы могли очистить их по группам. Это действительно зависит от ваших потребностей.
Например, если вы кешируете продукты:
Cache::put('product_' . $product->id, $product, $minutes);
Предположим, что теперь вы хотите удалить все товары из кеша. Вам нужно будет очистить каждый ключ кеша с помощью шаблонаproduct_{id}
один за другим, но если вы пометите их общим ключом (products
например), вы можете очистить сразу все продукты:
Cache::tags(['products'])->put('product_' . $product->id, $product, $minutes);
Вы также можете использовать команду artisan для удаления определенных тегов:
php artisan cache:clear --tags=products
или программно
Cache::tags('products')->flush();
По моему мнению (только мнение), теги кэша Laravel имеют ограниченное применение в реальной жизни. Тегирование предназначено для того, чтобы указать, из каких элементов состоит кеш. Например, предположим, что вы храните полностраничный кеш, который содержит 10 продуктов, 2 сведения о категориях, 5 специальных предложений и т. д. Идея состоит в том, что при любом из этих изменений вы сможете аннулировать полностраничный кеш, не зная, какие еще элементы использовались для создания полного кэша страниц. С Laravel вы не сможете этого сделать. Вам необходимо знать все теги (в том же порядке!), которые вы никогда не узнаете, например, при обновлении категории.
Лучшим вариантом является https://github.com/swayok/alternative-laravel-cache .