---
url: 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/advanced/content-staging'
title: '内容暂存 | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T00:44:42+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  内容暂存是指在访客看到之前，先构建并检查 DXPR Builder 页面。有两种做法：在单独的暂存网站上构建，再把内容移到生产站；或在同一个网站上用 Drupal 的修订和 Content Moderation。本页介绍这两种做法，并准确说明构建器保存对修订和审核状态的影响，因为这决定了哪种做法适合您。
  构建器保存做了什么
  编辑器中的每次保存都会执行以下步骤：

  加载页面的 default revision，使用正在编辑的语言。
  检查当前用户是否有权更新该页面。
  将新的 HTML 写入字段。
  如果该实体类型支持修订，则创建新修订并将其设为默认修订。当前用户成为其作者，日志消息为 Saved with DXPR builder，时间为请求时间。
  解除该页面和修订的编辑锁定，然后保存页面。

  保存背后的请求见 API 端点。
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 的修订和 Content Moderation。本页介绍这两种做法，并准确说明构建器保存对修订和审核状态的影响，因为这决定了哪种做法适合您。
        构建器保存做了什么
        编辑器中的每次保存都会执行以下步骤：

        加载页面的 default revision，使用正在编辑的语言。
        检查当前用户是否有权更新该页面。
        将新的 HTML 写入字段。
        如果该实体类型支持修订，则创建新修订并将其设为默认修订。当前用户成为其作者，日志消息为 Saved with DXPR builder，时间为请求时间。
        解除该页面和修订的编辑锁定，然后保存页面。

        保存背后的请求见 API 端点。
      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:42+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/content-staging'
      articleSection: 'Naar productie'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/advanced/content-staging'
      description: |-
        内容暂存是指在访客看到之前，先构建并检查 DXPR Builder 页面。有两种做法：在单独的暂存网站上构建，再把内容移到生产站；或在同一个网站上用 Drupal 的修订和 Content Moderation。本页介绍这两种做法，并准确说明构建器保存对修订和审核状态的影响，因为这决定了哪种做法适合您。
        构建器保存做了什么
        编辑器中的每次保存都会执行以下步骤：

        加载页面的 default revision，使用正在编辑的语言。
        检查当前用户是否有权更新该页面。
        将新的 HTML 写入字段。
        如果该实体类型支持修订，则创建新修订并将其设为默认修订。当前用户成为其作者，日志消息为 Saved with DXPR builder，时间为请求时间。
        解除该页面和修订的编辑锁定，然后保存页面。

        保存背后的请求见 API 端点。
      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/backup-restore)
- [版本控制](/zh-hans/hc/documentation/learn-dxpr-builder/advanced/version-control)

内容暂存是指在访客看到之前，先构建并检查 DXPR Builder 页面。有两种做法：在单独的暂存网站上构建，再把内容移到生产站；或在同一个网站上用 Drupal 的修订和 Content Moderation。本页介绍这两种做法，并准确说明构建器保存对修订和审核状态的影响，因为这决定了哪种做法适合您。

## 构建器保存做了什么

编辑器中的每次保存都会执行以下步骤：

1. 加载页面的 **default revision**，使用正在编辑的语言。
2. 检查当前用户是否有权更新该页面。
3. 将新的 HTML 写入字段。
4. 如果该实体类型支持修订，则创建新修订并将其设为默认修订。当前用户成为其作者，日志消息为 `Saved with DXPR builder`，时间为请求时间。
5. 解除该页面和修订的编辑锁定，然后保存页面。

保存背后的请求见 [API 端点](/zh-hans/hc/documentation/learn-dxpr-builder/reference/api-endpoints)。

因此，在节点或 Drag and Drop Block 上的每次保存都会创建新修订，无论内容类型是否勾选了 **Create new revision**，**Revisions** 选项卡都会用构建器的日志消息列出每次保存。Drush `dxb:page:update` 也会创建修订，日志消息为 `Updated via dxb:page:update Drush command.`

构建器没有审核状态的控件，也从不设置 `moderation_state`。当内容类型启用了 Content Moderation 时，新修订保留构建器加载的修订的状态，Content Moderation 在保存时应用该状态的规则：

- 已发布的页面保持发布，新修订立即上线。
- Draft 中的未发布页面仍留在 Draft。
- 有已发布默认修订、又有更新的待定草稿的页面是个问题：构建器加载的是已发布修订，而不是草稿，因此保存会根据已发布内容创建新的已发布修订，草稿的更改会被搁置。

请用节点编辑表单更改状态。要在同一个网站内走检查流程，请让页面在编辑人员用构建器编辑期间保持未发布（Draft），检查完成后再通过表单发布。

## 暂存网站流程

单独的暂存网站避开了上述审核限制，还能让相关方检查真实页面。

1. 编辑人员在暂存网站上构建和修改页面。
2. 检查人员在那里批准。
3. 用下文方法之一将批准的内容移到生产站。
4. 以匿名访客身份在生产站上检查页面。

### 复制数据库

将数据库从暂存站整体复制到生产站：

```bash
drush sql:sync @staging @production

```

这会替换生产站的所有内容，因此请先备份生产站，并预计丢失复制后在生产站上所做的更改。文件不包含在内；请按下文所述同步文件。

### 选择性导出内容

要移动单个页面，请用 Default Content 等模块导出节点，包括页面引用的媒体和文件，再导入生产站。构建器将其 HTML 存放在文本字段中，因此字段值随节点一起迁移。HTML 中的图片路径指向 `sites/default/files/dxpr_builder_images`，因此也要复制这些文件。

### 仅部署配置

如果您构建的是可重复使用的布局，而不是具体页面：

1. 在暂存站上，用容器栏的 **More** &gt; **Save as template** 保存布局。这会创建一个用户模板。
2. 前往 **DXPR Studio** &gt; **DXPR Builder** &gt; **User Templates**，在该模板的操作中选择 **Create page template**。
3. 导出配置：

    ```bash
    drush config:export

    ```
4. 部署 `dxpr_builder.page_template.*.yml` 文件并在生产站上导入：

    ```bash
    drush config:import

    ```
5. 编辑人员在生产站上从该模板开始新建页面。页面模板出现在空容器中。

## 文件同步

构建器的上传文件存放在网站默认文件目录的 `dxpr_builder_images`、`dxpr_builder_videos` 和 `dxpr_builder_files` 中。请随内容一起同步它们：

```bash
rsync -avz staging:/path/to/files/ production:/path/to/files/

```

在两个环境都挂载 S3 等共享文件存储，可省去这一步。

## 修订与回滚

因为每次保存都是一个修订，所以回滚是 Drupal 操作：

1. 打开页面的 **Revisions** 选项卡。
2. 找到不需要的保存之前的修订；每次构建器保存都显示 `Saved with DXPR builder`。
3. 点击 **Revert**。

还原会创建另一个修订，因此历史记录保持完整。

## 编辑锁定

当编辑人员首次点击进入容器时，编辑器发送 `dxpr_toggle_content_lock` 请求到 `/dxpr_builder/ajax`，`dxpr_lock` 表记录实体、修订、语言和用户。当另一位编辑人员打开该页面时，编辑器查询 `dxpr_content_lock_status`，隐藏容器控件，并显示带锁定者姓名的 **Locked** 按钮。保存会删除该行。另一位编辑人员也可以点击 **Locked** 并确认，以覆盖锁定；从那时起，最后保存者胜出。

## 接下来做什么？

- [备份和恢复](/zh-hans/hc/documentation/learn-dxpr-builder/advanced/backup-restore)：在运行数据库复制之前。
- [版本控制](/zh-hans/hc/documentation/learn-dxpr-builder/advanced/version-control)：部署页面模板等配置。