Chciałbym pozwolić stronom nadal korzystać z mechanizmu buforowania Drupal 8 dla anonimowych użytkowników, z wyjątkiem określonych bloków, które powinny aktualizować się przy każdym odświeżeniu strony, wiedząc, że są generowane z widoków.
Czy to technicznie możliwe? W jaki sposób?
Odpowiedzi:
Co pokazuje ten widok?
D8 ma tagi pamięci podręcznej i konteksty, które automatycznie unieważnią blok, jeśli coś się zmieni.
Jeśli więc masz listę węzłów, za każdym razem, gdy węzeł jest dodawany lub aktualizowany, blok ten będzie aktualizowany, ale do tego czasu używana jest wersja buforowana. Co jest znacznie lepsze niż przebudowywanie na każdej stronie.
Działa również z pamięcią podręczną stron, strony te również zostaną automatycznie zaktualizowane.
Wiele, wiele rzeczy po prostu działa z buforowaniem po wyjęciu z pudełka, bez potrzeby ręcznej konfiguracji.
Edytuj (w odpowiedzi na komentarz):
Losowo z wtyczką losowego sortowania? To powinno automatycznie oznaczyć ten blok jako niemożliwy do buforowania. Nie wpływa to jednak na moduł pamięci podręcznej strony. Jest teraz nowy moduł smartcache / dynamiczna pamięć podręczna stron, ale będzie ona tylko w następnej wersji beta (lub RC!). To w końcu pozwoli buforować resztę strony i po prostu zbudować tę część.
Ale taki przypadek najlepiej jest zaimplementować za pomocą jakiegoś javascript. Jeśli jest tylko kilka węzłów, możesz wyświetlić je wszystkie, domyślnie ukryte i po prostu losowo uczynić jeden z nich widocznym. Lub poproś o adres URL z javascript, który zwraca losową reklamę, lub jeszcze lepiej odwiedź losową liczbę N adresów URL, z których każdy zwraca reklamę (np. Przez zwrócenie listy adresów URL, a następnie wybranie jednego z nich. Możesz to zrobić bezpośrednio dla adresu URL obrazu .
źródło
Jeśli jest to blok niestandardowy, możesz użyć interfejsu API pamięci podręcznej i ustawić maksymalny wiek pamięci podręcznej na 0, np
Jeśli jest to istniejący blok, możesz go zmienić, aby dodać to do tablicy renderowania.
źródło