Colocação em cache.

Learn DXPR BuilderManage the siteNaar productie

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:

  1. 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.
  2. 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.
  3. 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 defined só 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

  1. Corra as atualizações de base de dados e limpe as caches:

    drush updb -y
    drush cr
    

    drush cr reconstró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.

  2. 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.

  3. 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?