---
url: 'https://dxpr.com/pt-pt/hc/documentacao/aprender-dxpr-builder/avancado/colocacao-em-cache'
title: 'Colocação em cache | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:44:51+00:00'
updated: '2026-10-24T17:19:22+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  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:
tags:
  - 'Run it in production'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T17:19:22+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Colocação em cache'
      description: |-
        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:
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T11:44:51+0000'
      dateModified: '2026-10-24T17:19:22+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/pt-pt/hc/documentacao/aprender-dxpr-builder/avancado/colocacao-em-cache'
      articleSection: 'Operar em produção'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/pt-pt/hc/documentacao/aprender-dxpr-builder/avancado/colocacao-em-cache'
      description: |-
        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:
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Início
            item: 'https://dxpr.com/pt-pt'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: pt-pt
---
[Centro de ajuda](/pt-pt/node/75)/[Documentação](/pt-pt/hc/documentacao) /[Aprender DXPR Builder](/pt-pt/hc/documentation/learn-dxpr-builder) /[Gerir o site](/pt-pt/hc/documentation/learn-dxpr-builder/manage) /[Operar em produção](/pt-pt/hc/documentation/learn-dxpr-builder/manage/production) # Colocação em cache.

 Aprender DXPR BuilderGerir o siteOperar em produção

   ## Neste guia

 Guias relacionados

- [Desempenho](/pt-pt/hc/documentacao/aprender-dxpr-builder/avancado/desempenho)
- [Arquitetura](/pt-pt/hc/documentacao/aprender-dxpr-builder/desenvolvimento/arquitetura)
- [Os visitantes veem algo diferente](/pt-pt/hc/documentacao/aprender-dxpr-builder/resolucao-de-problemas/visitantes-veem-algo-diferente)

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](/pt-pt/hc/documentacao/aprender-dxpr-builder/resolucao-de-problemas/editor-nao-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](/pt-pt/hc/documentacao/aprender-dxpr-builder/resolucao-de-problemas/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:

    ```bash
    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](/pt-pt/hc/documentacao/aprender-dxpr-builder/resolucao-de-problemas/depois-de-atualizar).

## O que se segue?

- [Desempenho](/pt-pt/hc/documentacao/aprender-dxpr-builder/avancado/desempenho) para o que cada página de visitante e editor descarrega.
- [Arquitetura](/pt-pt/hc/documentacao/aprender-dxpr-builder/desenvolvimento/arquitetura) para o código que apresenta, guarda e coloca em cache um campo do construtor.
- [Os visitantes veem algo diferente](/pt-pt/hc/documentacao/aprender-dxpr-builder/resolucao-de-problemas/visitantes-veem-algo-diferente)para os sintomas relacionados com cache e as correções.