dede如何自动更新主页?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 DEDE建站 正文

为什么需要“自动更新”?

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

dede 自动更新主页
(图片来源网络,侵删)

使用DedeCMS自带的“首页更新”计划任务(最简单、推荐)

这是DedeCMS内置的功能,通过Linux的 cron 或Windows的“任务计划程序”定时访问一个特定的URL来触发更新。这是最常用、最稳定、最推荐的方法。

操作步骤:

第一步:开启DedeCMS的计划任务功能

  1. 登录你的DedeCMS后台。
  2. 进入 【系统】 -> 【系统基本参数】 -> 【核心设置】
  3. 找到 “是否开启计划任务” 选项,将其设置为 “是”
  4. 保存设置。

第二步:设置首页更新任务

  1. 在后台菜单中,找到 【系统】 -> 【计划任务管理】
  2. 点击 “增加新任务”
  3. 填写任务信息:
    • 任务名称: 首页自动更新 (可以自定义)
    • 执行程序: /index.php (这是关键,DedeCMS会识别这个参数来执行首页更新)
    • 循环执行: 选择 “按天”,并设置一个时间,23:55 (建议在网站访问量最低的深夜执行,例如凌晨2-3点)。
    • 最大执行时间: 60 (单位是秒,一般足够了)
    • 允许并发:
  4. 点击 “保存”

第三步:配置服务器定时任务(最关键的一步)

dede 自动更新主页
(图片来源网络,侵删)

现在DedeCMS后台知道什么时候该更新了,但需要一个“闹钟”在指定时间去提醒它,这个“闹钟”就是服务器的计划任务。

A. 如果你使用的是Linux服务器(最常见)

你需要通过SSH登录到服务器,使用 crontab 命令来设置。

  1. 获取你的任务触发URL: 回到DedeCMS后台的 【计划任务管理】 页面,你会看到刚才创建的任务列表,在“任务名称”旁边有一个 “执行” 链接,右键点击它,复制链接地址,这个URL通常类似于: http://www.yourdomain.com/dede/index.php?upcache=1&job=首页自动更新

    dede 自动更新主页
    (图片来源网络,侵删)
    • www.yourdomain.com 替换成你的域名。
    • dede 替换成你的后台目录名。
    • job=首页自动更新 就是你在第二步设置的任务名称。
  2. 设置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)。
  3. 验证Crontab: 输入 crontab -l 查看已设置的任务,确认是否添加成功。

B. 如果你使用的是Windows服务器

  1. 获取你的任务触发URL:和Linux服务器一样,先从DedeCMS后台复制出执行链接。
  2. 打开“任务计划程序”

    在服务器上,点击“开始”菜单,找到“任务计划程序”。

  3. 创建基本任务
    • 在右侧操作栏点击“创建基本任务...”。
    • 名称: 输入“DedeCMS首页更新”,点击“下一步”。
    • 触发器: 选择“每天”,设置一个时间(如凌晨2:00),点击“下一步”。
    • 操作: 选择“启动程序”,点击“下一步”。
    • 启动程序:
      • 程序或脚本: C:\Windows\System32\cmd.exe
      • 添加参数(可选): /c start "" "http://www.yourdomain.com/dede/index.php?upcache=1&job=首页自动更新"
      • 起始于(可选): 留空即可。
    • 点击“完成”。

至此,方法一设置完毕。 从现在起,每天你设定的时间,服务器会自动访问那个URL,DedeCMS就会在后台静默地重新生成你的首页HTML文件。


使用“一键更新所有”功能(手动半自动)

如果你不想配置服务器的定时任务,可以采用更简单的半自动方法。

  1. 在DedeCMS后台创建一个“首页更新”任务:和方法一的第二步完全一样,设置好循环执行时间。

  2. 修改模板:将你网站首页的模板文件(通常是 /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的云服务器),这是最现代化、最灵活的方法。

工作原理

  1. 你每次提交代码到Git仓库(比如GitHub、Gitee)。
  2. Git服务器会向你的一个URL(Webhook URL)发送一个POST请求。
  3. 你的服务器上有一个监听脚本(如 webhook.php)接收到请求。
  4. 这个脚本执行DedeCMS的首页更新命令。

大致步骤

  1. 创建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!";
    ?>
  2. 在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 push event"。
    • 点击 "Add webhook"。
  3. 更新部署脚本: 你的部署脚本(比如在服务器上的 deploy.sh),在拉取最新代码后,除了需要更新文件,还需要调用DedeCMS的数据库更新和首页生成逻辑,这通常比较复杂,需要你对DedeCMS的文件结构和数据库有深入了解。

优点:与代码更新流程完美结合,自动化程度最高。 缺点:技术门槛高,配置复杂,不适合普通用户。


总结与推荐

方法 优点 缺点 推荐人群
计划任务 官方支持、稳定可靠、配置相对简单 需要服务器权限操作Crontab 所有用户,尤其是新手和中小型网站
模板触发 无需服务器权限,配置简单 不可靠、更新有延迟、不全面 不推荐,仅作为临时或备用方案
Git Webhook 高度自动化、与开发流程集成 技术门槛极高,配置复杂 有DevOps经验的开发者和高级用户

对于绝大多数DedeCMS用户来说,强烈推荐使用方法一,它完美地平衡了易用性和可靠性,是解决自动更新首页问题的标准答案。

-- 展开阅读全文 --
头像
C语言从入门到精通第二版如何快速精通?
« 上一篇 03-06
织梦URL为何显示不完整?
下一篇 » 03-06

相关文章

取消
微信二维码
支付宝二维码

目录[+]