Новое в Symfony 3.2: Tagged Cache

В 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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

16 − тринадцать =