Drupal 8 tiene caché de dos niveles, caché de página y caché de página dinámico.
Sí, puede interceptar la memoria caché de página dinámica como mencionó @ 4k4. El problema que está teniendo es más probable que intercepte el caché de la página. La clave está aquí .
Hay algunas soluciones para esto:
Agregue una nueva clase que implemente 'HttpKernelInterface' y registre 'http_middleware' con mayor prioridad que 200 (280 lo hará). Vea la clase 'PageCache' y las implementaciones para referencias.
Cree una nueva clase para alterar el 'PageCache' existente extendiéndose desde 'ServiceProviderBase'. Mira esto para referencias aquí . Luego, cree una nueva clase para extender el 'PageCache'.
Aquí hay referencias de código:
Esta es 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');
}
}
Esto es 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;
}
}
La esperanza ayuda.