Пример использования тегов кэша 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 .

Другие вопросы по тегам