用 WordPress 建博客的朋友,大概率都在 Nginx 日志里见过这种记录:
POST /wp-cron.php?doing_wp_cron=...
一开始我也以为是正常访问,后来才发现:
WordPress 自带的 wp-cron 并不是真正的定时任务,而是 “有人访问网站才触发” 的假定时。
只要有人打开页面,它就会在后台偷偷跑一遍计划任务,访问一多,就会:
- 页面突然变卡、响应变慢
- 数据库频繁被查询,负载升高
- 日志疯狂刷屏,一堆无用请求
- 高并发下甚至重复执行、乱执行任务
如果你也被 wp-cron 频繁请求烦到,不如直接关掉它,改用 Linux 系统自带的定时任务,稳定、安静、不占前端性能。
一、为什么建议关掉 WordPress 自带 wp-cron?
- 访问触发,不是真正定时 有人访问才执行,没人访问就一直积压,访问量大又瞬间爆发执行。
- 占用前端资源 它是在页面加载过程中跑的,会直接拖慢用户看到的页面速度。
- 容易重复执行、冲突 爬虫、刷新多了,同一任务同时跑好几次,服务器白白浪费资源。
- 日志杂乱 每天一大堆 wp-cron 请求,想看真正异常日志都费劲。
二、一步关闭 WordPress 伪定时任务
编辑网站根目录下的 wp-config.php,在 /* 好了,编辑到此为止! */ 这一行上面加入:
define('DISABLE_WP_CRON', true);
保存即可,WordPress 就不会再自动触发 wp-cron 了。
三、用 Linux crontab 真正定时执行(推荐)
直接让系统每分钟 / 每 5 分钟主动跑一次,稳定又安静。
- 打开 crontab 编辑:
crontab -e
- 加入下面任意一条(根据需求选):
每 5 分钟执行一次(最稳、适合大多数博客)
*/5 * * * * curl -so /dev/null https://www.58jb.com/wp-cron.php?doing_wp_cron
每分钟执行一次(文章定时发布多、插件任务频繁)
* * * * curl -so /dev/null https://www.58jb.com/wp-cron.php?doing_wp_cron
说明:
curl -so /dev/null静默执行,不写日志、不输出内容- 把域名换成你自己的
- 保存退出,自动生效。
四、这样优化后有什么好处?
- 网站前端不再偷偷跑后台任务,打开明显变快
- 服务器 CPU、数据库压力降低
- Nginx 日志清净很多,不再被 wp-cron 刷屏
- 定时发布文章、插件计划任务更稳定、不重复执行
- 爬虫再多也不会影响定时任务
五、常见疑问
1. 关闭 wp-cron 会影响网站功能吗?
不会。
只是不再由 “访问页面” 触发,改由系统定时触发,定时发文、备份、清理缓存等都正常工作。
2. 会不会和你之前的 Nginx 拦截规则冲突?
不会。
wp-cron 是本站自己发起的合法请求,不在拦截名单里,完全不受影响。
3. 低配服务器适合这样改吗?
非常适合。
这是低配服务器优化 WordPress 最实用、最立竿见影的方法之一。
总结
WordPress 默认的 wp-cron 本质上是 “将就用” 的方案,流量一上来就暴露缺点。
关掉它,改用 Linux 系统级定时任务,网站更流畅、服务器更轻松、日志更干净,属于花一分钟就能显著提升体验的优化。
如果你也觉得网站偶尔莫名卡顿、日志一堆 wp-cron,不妨照着设置一次,用完基本都不想改回去。