Drupal → Кэш-контекст по хэшу значения куки
В восьмёрке есть кэш-контекст cookies
, который возвращает значение куки. Значение возвращается без какой-либо обработки, что временами нежелательно, так как кука может быть оооочень длинной (например, как у меня - значения раскрытых фильтров вьюхи). Выход — создать новый кэш-контекст, который вместо raw значения куки будет возвращать его хэш:
// src/Cache/CookiesHashCacheContext.php namespace Drupal\modulename\Cache; use Drupal\Core\Cache\Context\CookiesCacheContext; class CookiesHashCacheContext extends CookiesCacheContext { /** * {@inheritDoc} */ public function getContext($cookie = NULL) { $result = parent::getContext($cookie); return hash('crc32', json_encode($result)); } }
# modulename.services.yml services: cache_context.cookies_hash: class: Drupal\modulename\Cache\CookiesHashCacheContext arguments: ['@request_stack'] tags: - { name: cache.context }
Использование:
$build['#cache']['contexts'][] = 'cookies_hash:example_cookie';
Оставить комментарий