什么是“远程生成”?
“远程生成”是 DedeCMS V5.7 及之前版本中一个非常核心的功能,主要用于解决 “动态网站生成静态HTML页面” 时的性能瓶颈问题。

(图片来源网络,侵删)
工作原理:
-
本地生成(传统方式):
- 你在后台添加一篇新文章或修改一个页面。
- 点击“生成”按钮。
- 你的本地服务器开始执行 PHP 脚本,读取数据库,将内容渲染成 HTML 代码,然后写入到服务器的硬盘上。
- 量很大(比如生成上千篇文章),这个过程会非常耗时,并且会占用大量本地服务器的 CPU 和 I/O 资源,导致网站在生成期间变得非常卡顿甚至无法访问。
-
远程生成(改进方式):
- 你在后台设置一台或多台“远程生成服务器”(Remote Server)。
- 这台“远程生成服务器”可以是你另外一台闲置的服务器、VPS,甚至是云服务器。
- 当你在主网站后台点击“生成”时,主网站并不会自己执行耗时的生成任务。
- 相反,它会向预先配置好的“远程生成服务器”发送一个“生成任务”的指令。
- 由远程生成服务器来执行所有耗时的 PHP 解析、数据库读取和 HTML 文件写入操作。
- 你的主网站服务器在发送指令后就可以立即响应,网站不会卡顿。
简单比喻:

(图片来源网络,侵删)
- 本地生成:就像你一个人在家做饭,从买菜、洗菜、切菜到炒菜、洗碗,所有事情都自己干,又累又慢。
- 远程生成:就像你点外卖(主网站下单),由专门的中央厨房(远程生成服务器)来帮你做菜、打包、配送,你只需要等待收货,自己省心省力。
如何配置和使用远程生成?
远程生成功能的配置主要在 DedeCMS 后台的 “系统” -> “系统基本参数” -> “性能选项” 中完成。
步骤 1:配置远程生成服务器
- 登录 DedeCMS 后台。
- 进入
系统->系统基本参数。 - 在左侧菜单选择
性能选项。 - 找到 “远程文件保存目录” 和 “远程生成服务器” 这两个配置项。
-
远程文件保存目录:
- 这里填写你的远程服务器上用于存放网站静态文件的目录。
- 格式通常是:
ftp://用户名:密码@服务器IP:端口/网站目录/ ftp://youruser:yourpass@123.45.67.89:21/wwwroot/your_site_html/- 这意味着生成后的 HTML 文件会通过 FTP 协议直接上传到远程服务器的指定目录。
-
远程生成服务器:
(图片来源网络,侵删)- 这里填写远程服务器的访问地址。
- 格式通常是:
http://服务器IP/dede/remote.php http://123.45.67.89/dede/remote.php- 这个地址是主网站用来向远程服务器发送指令的入口。
remote.php是 DedeCMS 提供的一个专门用于接收远程指令的脚本。
步骤 2:在远程服务器上准备环境
- 你需要在一台独立的服务器上搭建一个与主网站数据库完全相同的 DedeCMS 环境。
- 这个环境不需要完整的网站功能,只需要能运行 PHP 并能连接到主网站的数据库即可。
- 确保
remote.php文件存在于/dede/目录下,并且有可执行权限。 - 确保 FTP 用户名和密码有权限写入你指定的“远程文件保存目录”。
步骤 3:在后台使用远程生成
配置完成后,你在后台的任何生成操作(如“一键生成”、“更新栏目”、“更新文档”等),系统都会自动判断是否启用了远程生成,如果启用,它会将任务发送给远程服务器执行。
你可以在后台的 系统 -> 远程发布 菜单中查看生成任务的执行状态。
远程生成的优缺点分析
优点
- 解放主服务器资源: 这是最大的优点,主服务器不再被耗时的生成任务拖累,可以专注于处理用户的访问请求,网站的响应速度和稳定性得到极大提升。
- 提升用户体验: 管理员在后台生成内容时,前台网站依然流畅,不会出现“假死”状态。
- 实现负载均衡: 可以将“生成”这个重负载任务从主服务器上剥离,实现一种简单的负载均衡,你可以设置多台远程生成服务器来分担任务。
缺点与风险
- 配置复杂,维护成本高: 需要额外搭建、维护一台服务器,并且要保持数据库同步,这对于小型网站来说过于繁琐。
- 数据同步延迟: 远程生成服务器需要连接主站的数据库,如果数据库连接不稳定或延迟,可能会导致生成的 HTML 内容不是最新的,存在数据不一致的风险。
- 安全隐患(最重要!):
remote.php文件暴露:remote.php是一个接收外部指令的入口,如果配置不当(如弱密码、服务器安全漏洞),黑客可能利用这个文件向你的服务器发送恶意指令,执行非法操作。- 数据库连接信息暴露: 远程服务器需要知道主站的数据库地址、用户名和密码,这些信息如果泄露,后果不堪设想。
- FTP 信息暴露: FTP 的用户名和密码也需要配置,同样存在泄露风险。
- 已过时,不再推荐: DedeCMS 的开发已经停滞多年,远程生成功能的设计思路也相对陈旧,现代的 Web 架构和服务器性能已经大大提升,这个功能的必要性已经降低。
现代的替代方案
对于今天的新项目或对性能有要求的网站,不建议再使用 DedeCMS 的远程生成功能,以下是更现代、更高效的解决方案:
更强大的服务器硬件
对于大多数网站来说,升级主服务器的 CPU、内存和使用高速 SSD 硬盘,就能轻松应对 DedeCMS 的生成压力,这是最简单直接的方案。
使用队列系统
这是目前最主流、最专业的解决方案。
- 原理: 当需要生成一个页面时,不是立即执行,而是将这个“生成任务”放入一个“任务队列”(如 RabbitMQ, Redis Queue)中,由一个或多个独立的“消费者”进程在后台异步地、逐个地从队列中取出任务并执行。
- 优点:
- 完全解耦: 主网站逻辑与生成逻辑完全分离。
- 高性能: 用户请求瞬间完成,生成任务在后台平滑处理。
- 可扩展性: 可以轻松增加多个“消费者”来处理大量任务。
- 可靠性高: 任务队列自带持久化,即使服务器宕机,任务也不会丢失。
- 实现: 这需要对 PHP 进行一些开发,可以使用 Laravel (Queue), ThinkPHP (Queue) 等现代框架轻松实现。
开启 OPcache
OPcache 是 PHP 的官方缓存工具,它能将 PHP 脚本的编译结果(Opcode)缓存到内存中。
- 效果: 当页面被第一次访问或生成时,PHP 会编译脚本,后续的访问或生成,直接从内存中读取编译结果,跳过了耗时的编译步骤,可以显著提升 PHP 的执行效率。
- 操作: 只需在
php.ini中开启并配置 OPcache 即可,效果立竿见影。
实时生成(按需生成)
这是一种更灵活的策略,不提前生成所有页面。
- 原理: 默认所有页面都是动态的(
.php),当用户第一次访问某个静态页面(如/article/1.html)时,如果该 HTML 文件不存在,系统会动态生成它,并保存到硬盘,当用户第二次访问时,就直接读取已经生成的静态文件。 - 优点: 节省了生成所有页面的时间和资源,只生成真正被访问的页面。
- 实现: 通过服务器伪静态规则(如 Nginx 的
try_files)配合 PHP 代码实现。
| 特性 | DedeCMS 远程生成 | 现代替代方案 (如队列系统) |
|---|---|---|
| 核心思想 | 任务转移 | 任务异步化 |
| 实现方式 | 通过 FTP 和 remote.php |
通过消息队列 (MQ) |
| 优点 | 简单解放主服务器 | 高性能、高可靠、高扩展性 |
| 缺点 | 配置复杂、安全风险高、已过时 | 需要开发能力,技术门槛稍高 |
| 适用场景 | 旧版 DedeCMS 大型网站、服务器性能极差 | 现代 Web 应用、对性能和稳定性要求高的项目 |
最终建议:
- 如果你仍在维护一个老旧的 DedeCMS 网站,并且内容量巨大、服务器性能确实不足,可以考虑使用远程生成作为一种临时解决方案,但务必注意加强服务器的安全防护(如修改默认端口、使用强密码、防火墙限制访问等)。
- 对于任何新项目或计划升级的网站,请放弃使用远程生成,将精力放在升级服务器硬件、开启 OPcache 或学习并引入队列系统这些更现代、更安全、更高效的方案上。
