Estoy tratando de implementar un suscriptor de evento KernelEvents :: REQUEST para realizar alguna acción en la carga de la página.
Necesito que este evento se active independientemente de si la página solicitada existe en el caché de Drupal; parece que KernelEvents :: REQUEST no se activa cuando Drupal sirve algo del caché.
¿Hay algún evento que pueda usar para lograr esto, o debo implementar mis requisitos como alguna forma de middleware?
8
event-subscriber
kiamlaluno
fuente
fuente
Respuestas:
El caché dinámico suscribe un evento con prioridad 27. Si desea que su código se ejecute antes de eso, debe usar una prioridad> 27:
Que ejecuta DynamicPageCacheSubscriber :: onRequest ..
fuente
['checkForRediret', 30];
, funcionó como se esperaba.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:
Esto es StaticCache.php:
La esperanza ayuda.
fuente