Usiłuję zaimplementować subskrybenta zdarzenia KernelEvents :: REQUEST, aby wykonać pewne działanie podczas ładowania strony.
Potrzebuję tego zdarzenia do uruchomienia niezależnie od tego, czy żądana strona istnieje w pamięci podręcznej Drupal - wygląda na to, że KernelEvents :: REQUEST nie uruchamia się, gdy Drupal podaje coś z pamięci podręcznej.
Czy istnieje zdarzenie, którego mogę użyć, aby to osiągnąć, czy też muszę wdrożyć moje wymagania jako formę oprogramowania pośredniego?
8
event-subscriber
kiamlaluno
źródło
źródło
Odpowiedzi:
Dynamiczna pamięć podręczna subskrybuje zdarzenie o priorytecie 27. Jeśli chcesz, aby Twój kod działał wcześniej, musisz użyć priorytetu> 27:
Który uruchamia DynamicPageCacheSubscriber :: onRequest ..
źródło
['checkForRediret', 30];
, działało to zgodnie z oczekiwaniami.Drupal 8 ma dwupoziomową pamięć podręczną, pamięć podręczną strony i dynamiczną pamięć podręczną strony.
Tak, możesz przechwycić dynamiczną pamięć podręczną strony, jak wspomniano w @ 4k4. Wystąpił problem, który prawdopodobnie przechwytuje pamięć podręczną strony. Klucz jest tutaj .
Istnieje na to kilka rozwiązań:
Dodaj nową klasę, która implementuje „HttpKernelInterface” i zarejestruj „http_middleware” o wyższym priorytecie niż 200 (280 zrobi). Zobacz klasę i implementacje „PageCache” dla odniesień.
Utwórz nową klasę, aby zmienić istniejący „PageCache”, rozszerzając z „ServiceProviderBase”. Sprawdź to, aby uzyskać odniesienia tutaj . Następnie utwórz nową klasę, aby rozszerzyć „PageCache”.
Oto odniesienia do kodu:
To jest StaticCacheServiceProvider.php:
To jest StaticCache.php:
Nadzieja pomaga.
źródło