---
url: 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/advanced/caching'
title: '缓存 | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T00:44:35+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  DXPR Builder 页面是 Drupal 字段渲染数组，带有自己的缓存元数据，以及模块为编辑器和许可证检查保留的少量内部缓存。本页列出了代码缓存的内容、使用的标签和上下文、何时失效，以及更新后需要手动清除的内容。
  构建器字段
  该 DXPR Builder 字段格式化器为每个构建器字段设置以下缓存元数据：
tags:
  - 'Naar productie'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T09:09:48+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 缓存
      description: |-
        DXPR Builder 页面是 Drupal 字段渲染数组，带有自己的缓存元数据，以及模块为编辑器和许可证检查保留的少量内部缓存。本页列出了代码缓存的内容、使用的标签和上下文、何时失效，以及更新后需要手动清除的内容。
        构建器字段
        该 DXPR Builder 字段格式化器为每个构建器字段设置以下缓存元数据：
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T00:44:35+0000'
      dateModified: '2026-10-24T09:09:48+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/zh-hans/hc/documentation/learn-dxpr-builder/advanced/caching'
      articleSection: 'Naar productie'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/advanced/caching'
      description: |-
        DXPR Builder 页面是 Drupal 字段渲染数组，带有自己的缓存元数据，以及模块为编辑器和许可证检查保留的少量内部缓存。本页列出了代码缓存的内容、使用的标签和上下文、何时失效，以及更新后需要手动清除的内容。
        构建器字段
        该 DXPR Builder 字段格式化器为每个构建器字段设置以下缓存元数据：
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: 首页
            item: 'https://dxpr.com/zh-hans'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: zh-hans
---
[Help Center](/zh-hans/node/75)/[Documentation](/zh-hans/hc/documentation) /[Learn DXPR Builder](/hc/documentation/learn-dxpr-builder) /[Manage the site](/hc/documentation/learn-dxpr-builder/manage) /[Naar productie](/hc/documentation/learn-dxpr-builder/manage/production) # 缓存.

 Learn DXPR BuilderManage the siteNaar productie

   ## In this guide

 Related guides

- [性能](/zh-hans/hc/documentation/learn-dxpr-builder/advanced/performance)
- [架构](/zh-hans/hc/documentation/learn-dxpr-builder/development/architecture)
- [访客看到不同内容](/zh-hans/hc/documentation/learn-dxpr-builder/troubleshooting/visitors-see-something-else)

DXPR Builder 页面是 Drupal 字段渲染数组，带有自己的缓存元数据，以及模块为编辑器和许可证检查保留的少量内部缓存。本页列出了代码缓存的内容、使用的标签和上下文、何时失效，以及更新后需要手动清除的内容。

## 构建器字段

该 **DXPR Builder** 字段格式化器为每个构建器字段设置以下缓存元数据：

| 元数据 | 值 | 效果 |
|---|---|---|
| Cache context | `user.roles:authenticated` | 匿名访客和已登录访客使用各自的缓存条目。 |
| Cache tags | 实体自身的标签、`config:dxpr_builder.settings`，以及渲染语言的 `config:language.entity.<langcode>` 标签 | 保存实体、保存模块设置或更改语言配置时，渲染后的字段失效。 |
| `max-age` | `0`（任何已登录用户） | 构建器字段从不被 Dynamic Page Cache 缓存给已登录用户，因为渲染数组带有用户相关的 `drupalSettings`（邮箱、CSRF 令牌、档案）。 |

对匿名访客，字段按常规缓存，因此 Internal Page Cache 和 Dynamic Page Cache 无需运行模块代码即可提供构建器页面。在构建器中保存即保存实体，因此 Drupal 像处理其他保存一样使实体的缓存标签失效。

当字段启用编辑器时，模块会再次添加 `config:dxpr_builder.settings`。**Asset source** 设为 **Cloud** 且未配置产品密钥时，它还会将 `max-age` 设为 `0`，以便每个页面都显示产品密钥提示。

模块自己的管理表单会显式使 `config:dxpr_builder.settings` 失效：**General Settings**、**AI**、用户档案表单以及页面和用户模板表单。

## 页面中的视图和区块

区块和视图以空的 `az-cms-element` 占位符存放在已保存的 HTML 中。字段渲染时，模块加载每个区块或视图，用核心渲染器渲染，并将输出插入字段标记。视图的库和 `drupalSettings` 会复制到字段上；其缓存元数据像页面渲染期间构建的任何渲染数组一样，通过渲染器冒泡。

其结果是，视图的行会一直留在缓存字段中，直到视图的某个缓存标签失效。带基于时间的缓存的视图会在整个有效期内保留旧行。如果访客看到过期的行：

1. 打开该视图，展开 **Advanced**，将 **Caching** 设为 **Tag based**。**None** 会停用 Dynamic Page Cache，但 Internal Page Cache 仍会为匿名访客保留整页。
2. 保存该视图。保存任何视图还会使 `config:view_list` 失效，从而清除模块为编辑器准备的视图列表。
3. 清除所有缓存。

在编辑器中，您添加或更改的区块或视图通过 `/dxpr_builder/ajax` 获取。模块不缓存该响应。

## 内部缓存

所有条目都位于默认缓存箱（`cache.default`）中。元素选择器的缓存带有标签 `dxpr_builder:cms_elements`，以及所列实体类型的列表缓存标签，因此相关实体变化时它们会自动清除。

| 缓存 ID | 内容 | 清除方 |
|---|---|---|
| `dxpr_builder:cms_elements_blocks`、`dxpr_builder:cms_block_categories` | 元素选择器的区块列表和区块分类 | 保存或删除内容区块或 webform（`block_content_list`、webform 列表标签）、卸载任何模块时删除条目、`drush cr` |
| `dxpr_builder:cms_disallowed_elements:<uid>:<roles hash>` | 当前用户不可用的区块 | 相同的标签，以及用户每个角色的 `config:user.role.<role>` 标签 |
| `dxpr_builder:cms_elements_views`、`dxpr_builder:cms_view_elements_settings`、`dxpr_builder:cms_views_tags` | 视图显示、其设置和编辑器用标识符 | 保存、添加或删除任何视图（`config:view_list`）、`drush cr` |
| `dxpr_builder:button_styles` | Button 元素的按钮样式 | 标签 `dxpr_builder:cms_elements`、`drush cr` |
| `dxpr_builder_license_info` | 许可证状态调用的结果 | 授权时 24 小时后过期，未授权时 30 分钟后过期（`LICENSE_CHECK_INTERVAL`、`LICENSE_NOT_AUTHORIZED_INTERVAL`）；网站向许可证服务器发送用户变更后失效 |
| `dxpr_builder_license_users` | 许可证服务器返回的编辑人员列表 | 24 小时后过期；网站向许可证服务器发送用户变更后失效 |
| `dxpr_builder_blacklisted` | 域名黑名单结果 | 一小时后过期，域名被屏蔽期间一分钟后过期 |
| `dxpr_builder:jwt_decoded:<sha256 of the key>` | 解码后的产品密钥，每个密钥一条 | 标签 `config:dxpr_builder.settings` |

主题实用类（`dxpr_builder_classes`，在主题 `.info.yml` 中）来自 Drupal 缓存的主题信息，因此更改后需要先运行 `drush cr`，编辑器才能看到。图标集文件（`*.dxpr_icon_sets.yml`）在每次加载编辑器页面时读取，但其命名的库像任何新库一样需要 `drush cr`。

## 资源与聚合

六个编辑器脚本要么是外部的（Cloud），要么声明了 `preprocess: FALSE`，因此聚合从不处理它们。聚合适用于编辑器的辅助库，例如带 Sortable 的 `dxpr_builder/editor.core`，以及面向访客的文件（`dxpr_builder/core`、`dxpr_builder/editor.frontend`、`elements.*` 库和 `bootstrap_5`）。有两个症状可追溯到聚合缓存：

- 更新后编辑器损坏，或仅在开启聚合时报告 `Sortable is not defined`。请参阅 [编辑器不出现](/zh-hans/hc/documentation/learn-dxpr-builder/troubleshooting/editor-not-loading)。
- 更新或更改设置后，访客看不到样式或图标。请参阅 [访客看到的内容不同](/zh-hans/hc/documentation/learn-dxpr-builder/troubleshooting/visitors-see-something-else)。

## 更新后清除哪些内容

1. 运行数据库更新，然后清除缓存：

    ```bash
    drush updb -y
    drush cr

    ```

    `drush cr` 会重建构建器的库定义（跟随模块版本和资源来源）、聚合后的资源文件，以及上文的内部缓存。
2. 以编辑人员身份打开一个构建器页面并保存。这会用当前版本的标记重写页面，并使其的实体标签失效。
3. 在 Varnish 或 CDN 后面，请清除构建器页面或等待最长有效期过去；模块不发送清除请求。

如果访客仍看到页面的旧内容，请参阅 [更新后出现的问题](/zh-hans/hc/documentation/learn-dxpr-builder/troubleshooting/after-updating)。

## 接下来做什么？

- [性能](/zh-hans/hc/documentation/learn-dxpr-builder/advanced/performance)：每位访客和编辑人员的页面下载内容。
- [架构](/zh-hans/hc/documentation/learn-dxpr-builder/development/architecture)：渲染、保存和缓存构建器字段的代码。
- [访客看到的内容不同](/zh-hans/hc/documentation/learn-dxpr-builder/troubleshooting/visitors-see-something-else)：缓存相关症状及其修复方法。