В Symfony 3.1 мы добавили новый компонент кэша, который строго выполнял требования PSR-6: Стандарта кэширования интерфейса. В Symfony 3.2 мы решили улучшить кэш некоторыми фичами, не определенными в стандарте.
Первая новая функция на основе инвалидация по тегам (tag-based invalidatio) для создания маркированного(tagged) кэша. Представьте себе, что ваше приложение является приложением электронной коммерции, которая хранит отзывы пользователей в кэше. При сохранении этих отзывом, теперь вы можете связать к ним метки:
use Symfony\Component\Cache\Adapter\FilesystemAdapter; $cache = new FilesystemAdapter(); $review = $cache->getItem('reviews-'.$reviewId); $review->set('...'); $review->tag(['reviews', 'products', 'product-'.$productId]); $cache->save($review);
Кэшированное review связан с тремя различными метками, которые могут быть использованы для инвалидации связанных с ним элементов:
// the HTML structure of reviews has changed: // invalidate all reviews $cache->invalidateTags('reviews'); // a special sale is enabled in the store: // invalidate anything related to products $cache->invalidateTags('products'); // the data of the product #123 has changed: // invalidate anything related to that product $cache->invalidateTags('product-123'); // a major store update is being deployed: // invalidate all the information related to products and reviews $cache->invalidateTags(['products', 'reviews']); // after invalidating any of the previous tags, the item is no longer // available in the cache: $cache->getItem('reviews-'.$reviewId)->isHit(); // returns false
Компонент Cache в настоящее время определяет TagAwareAdapterInterface для добавления инвалидация по тегам в ваших собственных адаптерах кэша и TaggedCacheItemInterface, чтобы помечать элементы кэша. Кроме того, он включает в себя TagAwareRedisAdapter, с тем чтобы задействовать инвалидацию по тегам при использовании Redis.
Источник: symfony.com/blog/new-in-symfony-3-2-tagged-cache