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;
}
}
Надія допомагає.