Drupal 8 имеет двухуровневый кеш, кеш страниц и динамический кеш страниц.
Да, вы можете перехватить динамический кеш страниц как упомянутое @ 4k4. Проблема, с которой вы столкнулись, скорее всего перехватит кеш страниц. Ключ здесь .
Есть несколько решений для этого:
Добавьте новый класс, который реализует 'HttpKernelInterface' и зарегистрируйте 'http_middleware' с более высоким приоритетом, чем 200 (280 будет делать). См. Класс 'PageCache' и реализации для ссылок.
Создайте новый класс для изменения существующего «PageCache» путем расширения из «ServiceProviderBase». Проверьте это для ссылок здесь . Затем создайте новый класс для расширения «PageCache».
Вот ссылки на код:
Это StaticCacheServiceProvider.php:
/**
* Modifies the language manager service.
*/
class StaticCacheServiceProvider extends ServiceProviderBase
{
/**
* {@inheritdoc}
*/
public function alter(ContainerBuilder $container)
{
// Overrides language_manager class to test domain language negotiation.
$definition = $container->getDefinition('http_middleware.page_cache');
$definition->setClass('Drupal\your_module\StackMiddleware\StaticCache');
}
}
Это StaticCache.php:
/**
* Executes the page caching before the main kernel takes over the request.
*/
class StaticCache extends PageCache
{
/**
* {@inheritdoc}
*/
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
{
// do special logic here.
$response = parent::handle($request, $type, $catch);
return $response;
}
}
Надежда помогает.