O Drupal 8 possui cache de dois níveis, cache de página e cache dinâmico de páginas.
Sim, você pode interceptar o cache da página dinâmica conforme mencionado em @ 4k4. O problema que você está tendo é mais provável de interceptar o cache da página. A chave está aqui .
Existem algumas soluções para isso:
Adicione uma nova classe que implemente 'HttpKernelInterface' e registre 'http_middleware' com prioridade mais alta que 200 (o que é o caso de 280). Consulte a classe e implementações 'PageCache' para obter referências.
Crie uma nova classe para alterar o 'PageCache' existente estendendo-se de 'ServiceProviderBase'. Verifique isso para referências aqui . Em seguida, crie uma nova classe para estender o 'PageCache'.
Aqui estão as referências de código:
Este é 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');
}
}
Este é 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;
}
}
A esperança ajuda.