You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

页面从缓存加载时,WordPress Cron Job是否仍会运行?

WordPress Cron Job 与缓存的交互问题解答

嘿,这两个问题问到点子上了——缓存和WordPress Cron的冲突是很多开发者都会遇到的痛点,我来给你讲明白:

首先得先搞懂WordPress Cron的本质:它不是服务器层面的「真实Cron」,而是依赖前端页面请求来触发的虚拟Cron。每次有访客(或者你自己)访问网站时,WordPress会先初始化核心程序,然后检查有没有到期的Cron任务,如果有,就会在页面加载的过程中(或者异步执行)完成这些任务。

针对你的两个问题,答案是一致的:

  • 当页面从缓存加载时,Cron Job 不会运行。因为缓存插件直接返回了预生成的静态页面,这个请求根本没走到WordPress核心代码里,自然不会触发Cron的检查和执行流程。
  • 如果所有页面都由缓存插件提供服务,没有任何请求进入WordPress核心(比如访客一直访问缓存页面,没人进后台),那已计划的WordPress Cron Job 会停止执行,直到有一个「非缓存请求」出现(比如缓存过期后第一次访问、管理员登录后台、直接访问wp-cron.php文件),才会触发Cron的检查。

怎么解决这个问题?给你几个靠谱方案:

  1. 改用系统级真实Cron(最推荐)
    直接在你的服务器上设置系统Cron,定期调用WordPress的wp-cron.php文件,彻底摆脱对页面请求的依赖。比如每分钟执行一次:

    wget -q -O - https://你的域名/wp-cron.php?doing_wp_cron >/dev/null 2>&1
    

    这样不管有没有访客,Cron任务都会按时执行,完全不受缓存影响。

  2. 给wp-cron.php设置缓存例外
    让你的缓存插件跳过对wp-cron.php的缓存,然后可以用服务器的定时任务(或者第三方服务)定期访问这个文件,触发Cron检查。注意要给这个文件加安全限制,比如只允许服务器本地IP访问,或者在请求里加一个自定义密钥参数,防止被恶意请求滥用。

  3. 利用缓存插件的兼容设置
    部分缓存插件(比如WP Rocket)自带Cron兼容机制,会自动预留触发Cron的通道,或者允许你设置在缓存更新时同步触发Cron。不过这个方案的可靠性不如系统级Cron,适合不想折腾服务器的场景。

内容的提问来源于stack exchange,提问作者learning_13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:21:10