Buforowanie.

Learn DXPR BuilderManage the siteNaar productie

Strona kreatora DXPR to renderowana tablica pola Drupala z własnymi metadanymi pamięci podręcznej oraz garścią wewnętrznych pamięci podręcznych, które moduł trzyma dla edytora i sprawdzania licencji. Ta strona wymienia, co kod buforuje, jakich tagów i kontekstów używa, co je unieważnia i co wyczyścić ręcznie po aktualizacji.

Pole kreatora

Formater pola DXPR Builder ustawia te metadane pamięci podręcznej na każdym polu kreatora:

Metadane Wartość Skutek
Kontekst pamięci podręcznej user.roles:authenticated Anonimowi i zalogowani odwiedzający dostają osobne wpisy pamięci podręcznej.
Tagi pamięci podręcznej Własne tagi encji, config:dxpr_builder.settings i config:language.entity.<langcode> dla renderowanego języka Zapisanie encji, zapisanie ustawień modułu albo zmiana konfiguracji języka unieważnia renderowane pole.
max-age 0 dla każdego zalogowanego użytkownika Pola kreatora nigdy nie są buforowane przez Dynamic Page Cache dla zalogowanych użytkowników, ponieważ tablica renderująca niesie drupalSettings konkretnego użytkownika (e-mail, tokeny CSRF, profil).

Dla anonimowych odwiedzających pole buforuje się normalnie, więc Internal Page Cache i Dynamic Page Cache serwują strony kreatora bez uruchamiania kodu modułu. Zapisanie w kreatorze zapisuje encję, więc Drupal unieważnia tagi pamięci podręcznej encji jak przy każdym innym zapisie.

Gdy edytor jest włączony na polu, moduł dodaje ponownie config:dxpr_builder.settings. Przy Asset source ustawionym na Cloud i nieskonfigurowanym kluczu produktu ustawia też max-age na 0, aby komunikat o kluczu produktu pokazywał się na każdej stronie.

Własne formularze administracyjne modułu unieważniają config:dxpr_builder.settings wprost: General Settings, AI, formularz profilu użytkownika oraz formularze szablonów stron i użytkownika.

Widoki i bloki wewnątrz strony

Bloki i widoki przechowywane są w zapisanym HTML jako puste symbole zastępcze az-cms-element. Gdy pole się renderuje, moduł wczytuje każdy blok albo widok, renderuje go podstawowym rendererem i wstawia wynik do znaczników pola. Biblioteki widoku i jego drupalSettings są kopiowane na pole; jego metadane pamięci podręcznej przepływają przez renderer jak przy każdej tablicy renderującej budowanej podczas renderowania strony.

Konsekwencją jest to, że wiersze widoku pozostają w zbuforowanym polu, dopóki jeden z tagów pamięci podręcznej widoku nie zostanie unieważniony. Widok z buforowaniem czasowym trzyma stare wiersze przez cały swój czas życia. Jeśli odwiedzający widzą nieświeże wiersze:

  1. Otwórz widok, rozwiń Advanced i ustaw Caching na Tag based. None zatrzymuje Dynamic Page Cache, ale Internal Page Cache nadal trzyma całe strony dla anonimowych odwiedzających.
  2. Zapisz widok. Zapisanie dowolnego widoku unieważnia też config:view_list, co czyści listy widoków modułu dla edytora.
  3. Wyczyść wszystkie pamięci podręczne.

W edytorze blok albo widok dodany lub zmieniony pobierany jest przez /dxpr_builder/ajax. Moduł nie buforuje tej odpowiedzi.

Wewnętrzne pamięci podręczne

Wszystkie wpisy znajdują się w domyślnym koszyku pamięci podręcznej (cache.default). Zbuforowane wybieraki elementów noszą tag dxpr_builder:cms_elements oraz tagi list typów encji, które wymieniają, więc czyszczą się same, gdy te encje się zmieniają.

ID pamięci podręcznej Treść Czyści
dxpr_builder:cms_elements_blocks, dxpr_builder:cms_block_categories Lista bloków i kategorie bloków dla wybieraka elementów Zapisanie albo usunięcie bloku treści lub formularza webform (tagi list block_content_list, webform), usunięcie wpisów przy odinstalowaniu dowolnego modułu, drush cr
dxpr_builder:cms_disallowed_elements:<uid>:<roles hash> Bloki, których bieżący użytkownik nie może używać Te same tagi oraz config:user.role.<role> dla każdej roli użytkownika
dxpr_builder:cms_elements_views, dxpr_builder:cms_view_elements_settings, dxpr_builder:cms_views_tags Wyświetlenia widoków, ich ustawienia i identyfikatory dla edytora Zapisanie, dodanie albo usunięcie dowolnego widoku (config:view_list), drush cr
dxpr_builder:button_styles Style przycisków dla elementu Button Tag dxpr_builder:cms_elements, drush cr
dxpr_builder_license_info Wynik wywołania statusu licencji Wygasa po 24 godzinach, gdy autoryzowano, 30 minutach w przeciwnym razie (LICENSE_CHECK_INTERVAL, LICENSE_NOT_AUTHORIZED_INTERVAL); unieważniane po wysłaniu przez witrynę zmiany użytkownika do serwera licencji
dxpr_builder_license_users Lista redaktorów z serwera licencji Wygasa po 24 godzinach; unieważniane po wysłaniu przez witrynę zmiany użytkownika do serwera licencji
dxpr_builder_blacklisted Wynik listy zablokowanych domen Wygasa po godzinie albo po minucie, gdy domena jest zablokowana
dxpr_builder:jwt_decoded:<sha256 of the key> Zdekodowany klucz produktu, jeden wpis na klucz Tag config:dxpr_builder.settings

Klasy narzędziowe motywu (dxpr_builder_classes w pliku .info.yml motywu) pochodzą z buforowanych informacji o motywie Drupala, więc zmiana wymaga drush cr, zanim edytor ją zobaczy. Pliki zestawów ikon (*.dxpr_icon_sets.yml) odczytywane są przy każdym wczytaniu strony edytora, ale nazwana przez nie biblioteka wymaga drush cr jak każda nowa biblioteka.

Pliki i agregacja

Sześć skryptów edytora jest zewnętrznych (Cloud) albo zadeklarowanych z preprocess: FALSE, więc agregacja ich nigdy nie dotyka. Agregacja dotyczy bibliotek pomocniczych edytora, takich jak dxpr_builder/editor.core z Sortable, oraz plików dla odwiedzających (dxpr_builder/core, dxpr_builder/editor.frontend, biblioteki elements.* i bootstrap_5). Dwa objawy wracają do pamięci podręcznej agregacji:

  • Edytor psuje się po aktualizacji albo zgłasza Sortable is not defined tylko przy włączonej agregacji. Postępuj zgodnie z Edytor się nie pojawia.
  • Odwiedzający nie widzą stylów ani ikon po aktualizacji albo zmianie ustawień. Postępuj zgodnie z Odwiedzający widzą coś innego.

Co wyczyścić po aktualizacji

  1. Uruchom aktualizacje bazy danych, potem wyczyść pamięci podręczne:

    drush updb -y
    drush cr
    

    drush cr przebudowuje definicje bibliotek kreatora, które podążają za wersją modułu i źródłem plików, zagregowane pliki oraz wewnętrzne pamięci podręczne powyżej.

  2. Otwórz jedną stronę kreatora jako redaktor i zapisz ją. Zapisuje to stronę znacznikami bieżącego wydania i unieważnia jej tagi encji.

  3. Za Varnishem albo CDN wyczyść strony kreatora albo poczekaj na upłynięcie maksymalnego wieku; moduł nie wysyła żądań czyszczenia.

Jeśli strona nadal pokazuje odwiedzającym starą treść, zobacz Problemy po aktualizacji.

Co dalej?