Czy widoki są buforowane przez podstawowe mechanizmy buforowania, czy powinienem ustawić buforowanie bezpośrednio w każdym widoku?

23

Widzę, że w każdym z moich widoków są ustawienia pamięci podręcznej. Czy muszę je ustawić, czy też podstawowe mechanizmy buforowania w / admin / config / development / performance automatycznie wykonują niektóre z tych czynności, a te „dodatkowe ustawienia” w widokach są, jeśli chcę zastąpić domyślne zachowanie buforowania rdzenia drupala?

wprowadź opis zdjęcia tutaj

Nigel Waters
źródło
Ciekawi mnie dokładnie to pytanie. Czy określone ustawienia pamięci podręcznej Widoki zastępują ustawienia buforowania wydajności Drupal Core? Logicznie rzecz biorąc, sądzę, że tak właśnie będzie, ale nie można tego koniecznie założyć.
David Csonka,
Zacząłem nagrodę za to, ponieważ naprawdę chciałbym to lepiej zrozumieć.
David Csonka,

Odpowiedzi:

38

CO: Podstawowe buforowanie wydajności przechowuje i obsługuje całą renderowaną stronę z identyfikatorem pamięci podręcznej adresu URL. Buforowanie widoków wykracza poza to, aby buforować tylko dane wyjściowe widoku.

DLACZEGO: Jest świetny dla zalogowanych użytkowników; inne bloki na stronie mogą być bardziej dynamiczne, ale widok nie musi uruchamiać zapytania za każdym razem dla każdego użytkownika ... tylko sporadyczny użytkownik, który generuje pamięć podręczną strony po upływie okresu ważności pamięci podręcznej.

USTAWIENIA: Umożliwienie odświeżenia „renderowanego wyniku” niż zapytania jest przydatne w przypadku oznaczania zawartości jako nowej, w przeciwnym razie po prostu dopasuj ją.

WIELKA OBRAZ: Drupal obsługuje stronę dynamicznie, używając serwera do budowania stron w PHP i uzyskiwania dostępu do bazy danych (lub pamięci podręcznej w pamięci). Umożliwia to niesamowite funkcje i szybkość edytora treści ... ale kompromis wymaga zrozumienia buforowania i zrobienia tego poprawnie.

MODUŁY!

Jest też piękny moduł Views Content Cache , który czyści pamięć podręczną wyświetleń podczas edycji treści. Jeśli chcesz pójść dalej, możesz również sprawdzić akcje pamięci podręcznej , polecam Reguły, aby to dostroić.

Dodatkowo, Blockcache Alter pozwala ustawić opcje buforowania „dla roli”, strony, użytkownika itp. Dla każdego bloku w witrynie.

Możesz także dodać menedżera stron i panele . Pozwala to robić interesujące rzeczy, takie jak ustawianie pamięci podręcznej „na użytkownika”, „na rolę” lub w szeregu innych bardzo przydatnych konfiguracji. Chociaż osobiście unikam paneli.

DOKUMENTACJA: Ogólne informacje na temat buforowania i wydajności znajdują się na stronie Drupal.org .

doublejosh
źródło
Ta odpowiedź jest naprawdę dobra. Podwyższony głos. Dodałem sekcję o menedżerze stron i panelach, a teraz odpowiedź może być w większości kompletna.
Letharion
Czy konieczne jest włączenie „Blokowania buforowania” wydajności podstawowej, aby buforowanie specyficzne dla Widoku działało?
David Csonka,
Dziękujemy za dodanie trochę informacji o menedżerze stron / panelach - ponieważ po dodaniu nagrody za to zdałem sobie sprawę, że jestem również ciekawy buforowania mini-paneli. Zastanawiałem się, czy „Blokowanie pamięci podręcznej” funkcji Core Performance zastępuje lub było wymagane włączenie tej funkcji, aby „Proste buforowanie” Mini-Paneli było skuteczne.
David Csonka,
1
Buforowanie bloków rzeczywiście buforowałoby dane wyjściowe bloku niezależnie od ustawień buforowania widoków ... tak samo jak bufor strony. Jeśli masz 12-godzinny czas wylogowania z pamięci podręcznej stron, pamięć podręczna widoku nie ma znaczenia, ponieważ strony te nie są renderowane ponownie, po prostu są obsługiwane z pamięci podręcznej.
doublejosh,
1
Z drugiej strony, jeśli włączę buforowanie Core Block, Drupal nałoży takie same warunki buforowania na wszystkie moje bloki w całej mojej witrynie, prawda? Ponieważ Core Drupal Block Caching ma wyższy priorytet niż ustawienia buforowania Block Views? To wydaje się być dobrym scenariuszem, jeśli nie masz treści, które mogą wymagać odświeżenia w spójny sposób.
David Csonka,
4

Widoki używają interfejsów API pamięci podręcznej Drupal, ale tworzy własną pamięć podręczną, która nie jest powiązana ze zwykłą pamięcią podręczną stron / bloków Drupal.

Widoki buforują samą definicję widoku wraz z samym renderowanym widokiem. Renderowany widok można buforować na dwa sposoby: wynik zapytania lub rzeczywisty kod HTML widoku. Zwykle chcesz buforować wygenerowany kod HTML, ponieważ jest to najbardziej efektywny sposób. W niektórych przypadkach, w których chcesz zmienić dane wyjściowe na podstawie zalogowanego użytkownika, buforowanie zapytania może być również dość skuteczne.

Tabele używane przez widoki do przechowywania pamięci podręcznej to:

  • cache_views
  • cache_views_data
googletorp
źródło
Czy mogę więc wyłączyć ustawienie buforowania Drupal Core Block w admin / config / development / performance, ale włączyć osobno określone pamięci podręczne bloków wyświetlania i nadal mieć prawidłowe działanie tych pamięci podręcznych?
David Csonka,
1
@DavidCsonka Tak, możesz to zrobić. Buforowanie bloku byłoby bardziej skuteczne niż buforowanie widoku, ale tylko z niewielkim marginesem.
googletorp
Ahh, dobrze wiedzieć. Ale użycie tylko ustawień buforowania widoków dałoby mi bardziej precyzyjną kontrolę nad sposobem buforowania bloku Widoki, prawda? Jeśli zamiast tego korzystam z buforowania bloków podstawowych, to zasadniczo narzuca jeden zestaw ustawień buforowania dla każdego bloku w mojej witrynie? Poprawny?
David Csonka,
1
Buforowanie widoków (blok lub strona) daje kontrolę nad buforowaniem zestawu list wyników. Buforowanie bloków dotyczy pełnego wyjścia blokowego. Tak, buforowanie bloków rdzenia jest ustawieniem obejmującym całą witrynę, ale możesz użyć Block Cache Alter, aby zmienić to bardzo szczegółowo dla każdego bloku.
doublejosh
3
@doublejosh W Drupal 7 możesz zdefiniować sposób działania pamięci podręcznej bloków, w całej witrynie, według roli, na stronę, użytkownik strony to opcje, które moim zdaniem. Ponieważ buforuje na wyższym poziomie, jest bardziej efektywny.
googletorp
3

Dostępny jest teraz interesujący moduł o nazwie widoki cache bully, który automatycznie buforuje wszystkie widoki (wyniki zapytań i wyniki), z wyjątkiem widoków z odsłoniętymi formularzami. Moduł pozwala również ręcznie wykluczyć widoki z pamięci podręcznej. Umożliwia to buforowanie zestawu dla wszystkich widoków (oprócz tych wykluczonych) z centralnego punktu.

Dave Bruns
źródło
2

Drupal 7 zapewnia buforowanie stron, jednak buforowanie stron działa tylko dla anonimowych użytkowników i nie buforuje widoków

Buforowanie widoków działa jednak zarówno dla anonimowych, jak i zalogowanych użytkowników

Guy Schneerson
źródło