为什么需要“自动更新”?
DedeCMS为了提升网站访问速度,默认会把所有页面(包括主页)生成静态的HTML文件(如 index.html),当你更新了文章、产品或修改了配置后,这个 index.html 文件并不会自动改变,导致用户访问的还是旧内容。“自动更新”的本质就是发生变化后,自动触发系统重新生成 index.html 文件。

使用DedeCMS自带的“首页更新”计划任务(最简单、推荐)
这是DedeCMS内置的功能,通过Linux的 cron 或Windows的“任务计划程序”定时访问一个特定的URL来触发更新。这是最常用、最稳定、最推荐的方法。
操作步骤:
第一步:开启DedeCMS的计划任务功能
- 登录你的DedeCMS后台。
- 进入 【系统】 -> 【系统基本参数】 -> 【核心设置】。
- 找到 “是否开启计划任务” 选项,将其设置为 “是”。
- 保存设置。
第二步:设置首页更新任务
- 在后台菜单中,找到 【系统】 -> 【计划任务管理】。
- 点击 “增加新任务”。
- 填写任务信息:
- 任务名称:
首页自动更新(可以自定义) - 执行程序:
/index.php(这是关键,DedeCMS会识别这个参数来执行首页更新) - 循环执行: 选择 “按天”,并设置一个时间,
23:55(建议在网站访问量最低的深夜执行,例如凌晨2-3点)。 - 最大执行时间:
60(单位是秒,一般足够了) - 允许并发:
否
- 任务名称:
- 点击 “保存”。
第三步:配置服务器定时任务(最关键的一步)

现在DedeCMS后台知道什么时候该更新了,但需要一个“闹钟”在指定时间去提醒它,这个“闹钟”就是服务器的计划任务。
A. 如果你使用的是Linux服务器(最常见)
你需要通过SSH登录到服务器,使用 crontab 命令来设置。
-
获取你的任务触发URL: 回到DedeCMS后台的 【计划任务管理】 页面,你会看到刚才创建的任务列表,在“任务名称”旁边有一个 “执行” 链接,右键点击它,复制链接地址,这个URL通常类似于:
http://www.yourdomain.com/dede/index.php?upcache=1&job=首页自动更新
(图片来源网络,侵删)www.yourdomain.com替换成你的域名。dede替换成你的后台目录名。job=首页自动更新就是你在第二步设置的任务名称。
-
设置Crontab:
- 使用SSH登录服务器。
- 输入命令
crontab -e来编辑定时任务。 - 在文件末尾添加一行,格式如下:
# 格式:分 时 日 月 周 命令 # 每天凌晨2点执行首页更新任务 0 2 * * * /usr/bin/curl -s http://www.yourdomain.com/dede/index.php?upcache=1&job=首页自动更新 > /dev/null 2>&1
- 解释:
0 2 * * *:表示每天凌晨2点整执行。/usr/bin/curl:使用curl命令访问URL。-s参数表示“静默模式”,不显示进度条和错误信息,避免产生邮件,如果你的服务器没有curl,也可以用wget。> /dev/null 2>&1:将所有输出(包括标准输出和错误输出)重定向到/dev/null(一个黑洞),避免定时任务执行结果给你发送邮件,保持日志干净。
- 保存并退出文件(在vim中是
wq)。
-
验证Crontab: 输入
crontab -l查看已设置的任务,确认是否添加成功。
B. 如果你使用的是Windows服务器
- 获取你的任务触发URL:和Linux服务器一样,先从DedeCMS后台复制出执行链接。
- 打开“任务计划程序”:
在服务器上,点击“开始”菜单,找到“任务计划程序”。
- 创建基本任务:
- 在右侧操作栏点击“创建基本任务...”。
- 名称: 输入“DedeCMS首页更新”,点击“下一步”。
- 触发器: 选择“每天”,设置一个时间(如凌晨2:00),点击“下一步”。
- 操作: 选择“启动程序”,点击“下一步”。
- 启动程序:
- 程序或脚本:
C:\Windows\System32\cmd.exe - 添加参数(可选):
/c start "" "http://www.yourdomain.com/dede/index.php?upcache=1&job=首页自动更新" - 起始于(可选): 留空即可。
- 程序或脚本:
- 点击“完成”。
至此,方法一设置完毕。 从现在起,每天你设定的时间,服务器会自动访问那个URL,DedeCMS就会在后台静默地重新生成你的首页HTML文件。
使用“一键更新所有”功能(手动半自动)
如果你不想配置服务器的定时任务,可以采用更简单的半自动方法。
-
在DedeCMS后台创建一个“首页更新”任务:和方法一的第二步完全一样,设置好循环执行时间。
-
修改模板:将你网站首页的模板文件(通常是
/templets/default/index.htm)的底部,添加一个隐藏的iframe或img标签,用于在页面被访问时触发任务。在
index.htm的最底部,</body>标签之前,添加如下代码:{dede:global.cfg_cmsurl/}/index.php?upcache=1&job=首页自动更新 <!-- <img src="{dede:global.cfg_cmsurl/}/index.php?upcache=1&job=首页自动更新" style="display:none;" /> -->- 注意:这种方法有一个缺点,如果首页
index.html已经是旧的,用户访问时,浏览器会请求index.html,而不会去请求服务器上的PHP文件,所以这个方法只对动态浏览首页(即关闭了首页生成,或者用户直接访问index.php)有效。 - 改进思路:可以在文章列表页、文章详情页等高流量页面的模板里,也加入这个触发代码,这样,当用户访问这些页面时,就有机会触发首页更新,但这依然不是100%可靠的自动更新。
- 注意:这种方法有一个缺点,如果首页
方法二不如方法一可靠,仅作为备用方案。
使用Git+Webhook实现自动部署(高级、适合开发者)
如果你的网站是通过Git进行版本控制的,并且部署在支持Webhook的服务器上(如Vercel、Netlify,或支持Git Hook的云服务器),这是最现代化、最灵活的方法。
工作原理:
- 你每次提交代码到Git仓库(比如GitHub、Gitee)。
- Git服务器会向你的一个URL(Webhook URL)发送一个POST请求。
- 你的服务器上有一个监听脚本(如
webhook.php)接收到请求。 - 这个脚本执行DedeCMS的首页更新命令。
大致步骤:
-
创建Webhook监听脚本 (
webhook.php): 将此文件放在你的网站根目录下。<?php // 为了安全,设置一个密钥,在Webhook配置中需要一致 $secret = 'your_super_secret_key'; // 从HTTP请求头中获取签名 $signature = $_SERVER['HTTP_X_HUB_SIGNATURE_256'] ?? ''; list($algo, $hash) = explode('=', $signature, 2); // 计算请求体的哈希值并与签名比对 $payload = file_get_contents('php://input'); $expected_hash = hash_hmac($algo, $payload, $secret); if (!hash_equals($expected_hash, $hash)) { http_response_code(403); die('Signature verification failed.'); } // 验证通过,执行更新逻辑 // 1. 引入DedeCMS的核心文件 define('DEDEROOT', dirname(__FILE__)); require_once DEDEROOT . '/include/common.inc.php'; // 2. 调用更新首页的函数 // 这个函数在DedeCMS的文件中,通常需要你去看源码找到它 // 一个常见的做法是模拟计划任务的URL请求 $update_url = '/dede/index.php?upcache=1&job=首页自动更新'; $ch = curl_init('http://' . $_SERVER['HTTP_HOST'] . $update_url); curl_exec($ch); curl_close($ch); echo "Home page updated successfully!"; ?> -
在Git仓库中设置Webhook:
- 进入你的GitHub/Gitee仓库的 "Settings" -> "Webhooks"。
- 点击 "Add webhook"。
- Payload URL:
https://www.yourdomain.com/webhook.php - Secret:
your_super_secret_key(和你脚本里设置的一样) - Content type:
application/json - Which events would you like to trigger this webhook?: 选择 "Just the
pushevent"。 - 点击 "Add webhook"。
-
更新部署脚本: 你的部署脚本(比如在服务器上的
deploy.sh),在拉取最新代码后,除了需要更新文件,还需要调用DedeCMS的数据库更新和首页生成逻辑,这通常比较复杂,需要你对DedeCMS的文件结构和数据库有深入了解。
优点:与代码更新流程完美结合,自动化程度最高。 缺点:技术门槛高,配置复杂,不适合普通用户。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐人群 |
|---|---|---|---|
| 计划任务 | 官方支持、稳定可靠、配置相对简单 | 需要服务器权限操作Crontab | 所有用户,尤其是新手和中小型网站 |
| 模板触发 | 无需服务器权限,配置简单 | 不可靠、更新有延迟、不全面 | 不推荐,仅作为临时或备用方案 |
| Git Webhook | 高度自动化、与开发流程集成 | 技术门槛极高,配置复杂 | 有DevOps经验的开发者和高级用户 |
对于绝大多数DedeCMS用户来说,强烈推荐使用方法一,它完美地平衡了易用性和可靠性,是解决自动更新首页问题的标准答案。
