Colocação em cache.
Uma página do DXPR Builder é um render array de campo do Drupal com metadados de cache próprios, mais algumas caches internas que o módulo guarda para o editor e a verificação de licença. Esta página enumera o que o código guarda em cache, que etiquetas e contextos usa, o que as invalida, e o que limpar à mão após uma atualização.
O campo do construtor
O formatador de campo DXPR Builder define estes metadados de cache em cada campo do construtor:
| Metadata | Value | Effect |
|---|---|---|
| Contexto de cache | user.roles:authenticated |
Visitantes anónimos e autenticados recebem entradas de cache separadas. |
| Etiquetas de cache | As etiquetas próprias da entidade, config:dxpr_builder.settings e config:language.entity.<langcode> para o idioma apresentado |
Guardar a entidade, guardar as definições do módulo ou mudar a configuração de idioma invalida o campo apresentado. |
max-age |
0 para qualquer utilizador autenticado |
Os campos do construtor nunca ficam na cache dinâmica de página para utilizadores com sessão iniciada, porque o render array traz drupalSettings específico do utilizador (e-mail, tokens CSRF, perfil). |
Para visitantes anónimos, o campo fica em cache normalmente, por isso a cache interna de página e a cache dinâmica de página servem páginas do construtor sem correr o código do módulo. Guardar no construtor guarda a entidade, por isso o Drupal invalida as etiquetas de cache da entidade como em qualquer outra gravação.
Quando o editor está ativo no campo, o módulo adiciona
config:dxpr_builder.settings outra vez. Com Asset source definido como
Cloud e sem chave de produto configurada, também define max-age como
0 para a mensagem de chave de produto aparecer em cada página.
Os formulários de administração do módulo invalidam config:dxpr_builder.settings
explicitamente: General Settings, AI, o formulário de perfil de utilizador e
os formulários de modelos de página e de utilizador.
Vistas e blocos dentro de uma página
Blocos e vistas guardam-se no HTML guardado como marcadores
az-cms-element vazios. Quando o campo se apresenta, o módulo
carrega cada bloco ou vista, apresenta-o com o apresentador do núcleo e
insere o resultado na marcação do campo. As bibliotecas da vista e drupalSettings copiam-se
para o campo; os metadados de cache propagam-se pelo apresentador como
em qualquer render array construído durante a apresentação de uma página.
A consequência é que as linhas de uma vista ficam dentro do campo em cache até uma das etiquetas de cache da vista ser invalidada. Uma vista com cache por tempo mantém linhas antigas durante toda a vida. Se os visitantes veem linhas desatualizadas:
- Abra a vista, expanda Advanced e defina Caching como Tag based. None trava a cache dinâmica de página, mas a cache interna de página continua a guardar páginas inteiras para visitantes anónimos.
- Guarde a vista. Guardar qualquer vista também invalida
config:view_list, o que limpa as listas de vistas do módulo para o editor. - Limpe todas as caches.
No editor, um bloco ou vista adicionado ou alterado obtém-se através de
/dxpr_builder/ajax. O módulo não guarda essa resposta em cache.
Caches internas
Todas as entradas vivem no contentor de cache predefinido (cache.default). As
caches do seletor de elementos têm a etiqueta dxpr_builder:cms_elements
mais as etiquetas de cache de lista dos tipos de entidade que enumeram, por isso
limpam-se quando essas entidades mudam.
| Cache ID | Content | Cleared by |
|---|---|---|
dxpr_builder:cms_elements_blocks, dxpr_builder:cms_block_categories |
Lista de blocos e categorias de blocos para o seletor de elementos | Guardar ou eliminar um bloco de conteúdo ou um webform (block_content_list, etiquetas de lista de webforms), eliminar as entradas quando qualquer módulo é desinstalado, drush cr |
dxpr_builder:cms_disallowed_elements:<uid>:<roles hash> |
Blocos que o utilizador atual não pode usar | As mesmas etiquetas mais config:user.role.<role> para cada função do utilizador |
dxpr_builder:cms_elements_views, dxpr_builder:cms_view_elements_settings, dxpr_builder:cms_views_tags |
Apresentações de vistas, definições e identificadores para o editor | Guardar, adicionar ou eliminar qualquer vista (config:view_list), drush cr |
dxpr_builder:button_styles |
Estilos de botão para o elemento Button | Etiqueta dxpr_builder:cms_elements, drush cr |
dxpr_builder_license_info |
Resultado da chamada de estado da licença | Expira após 24 horas quando autorizado, 30 minutos senão (LICENSE_CHECK_INTERVAL, LICENSE_NOT_AUTHORIZED_INTERVAL); invalidado depois de o site enviar uma alteração de utilizador ao servidor de licenças |
dxpr_builder_license_users |
Lista de editores do servidor de licenças | Expira após 24 horas; invalidado depois de o site enviar uma alteração de utilizador ao servidor de licenças |
dxpr_builder_blacklisted |
Resultado da lista de bloqueio de domínios | Expira após uma hora, ou um minuto enquanto o domínio está bloqueado |
dxpr_builder:jwt_decoded:<sha256 of the key> |
Chave de produto descodificada, uma entrada por chave | Etiqueta config:dxpr_builder.settings |
As classes utilitárias de tema (dxpr_builder_classes num
.info.yml de tema) vêm da informação de tema em cache do Drupal, por isso uma
alteração precisa de drush cr antes de o editor a ver. Os ficheiros de conjuntos de ícones
(*.dxpr_icon_sets.yml) leem-se a cada carregamento de página do editor, mas uma
biblioteca que indicam precisa de drush cr como qualquer biblioteca nova.
Recursos e agregação
Os seis scripts do editor são externos (Cloud) ou declarados com
preprocess: FALSE, por isso a agregação nunca lhes toca. A agregação
aplica-se às bibliotecas auxiliares do editor, como
dxpr_builder/editor.core com Sortable, e aos ficheiros para visitantes
(dxpr_builder/core, dxpr_builder/editor.frontend, as
bibliotecas elements.* e bootstrap_5). Dois sintomas remontam
à cache de agregação:
- O editor avaria após uma atualização, ou indica
Sortable is not definedsó com a agregação ligada. Siga O editor não aparece. - Os visitantes não veem estilo nem ícones após uma atualização ou alteração de definições. Siga Os visitantes veem algo diferente.
O que limpar após uma atualização
-
Corra as atualizações de base de dados e limpe as caches:
drush updb -y drush crdrush crreconstrói as definições de biblioteca do construtor, que seguem a versão do módulo e a origem de recursos, os ficheiros agregados de recursos e as caches internas acima. -
Abra uma página do construtor como editor e guarde-a. Isto escreve a página com a marcação do lançamento atual e invalida as etiquetas de entidade.
-
Atrás de Varnish ou CDN, purgue as páginas do construtor ou aguarde a idade máxima passar; o módulo não envia pedidos de purga.
Se uma página continua a mostrar conteúdo antigo aos visitantes, consulte Problemas após atualizar.
O que se segue?
- Desempenho para o que cada página de visitante e editor descarrega.
- Arquitetura para o código que apresenta, guarda e coloca em cache um campo do construtor.
- Os visitantes veem algo diferente para os sintomas relacionados com cache e as correções.