WordPress 优化 – 使用 Crontab 取代 WP-Cron

简单来说,WordPress 默认的 Cron 触发依赖于网站访问而启动,并不是真正的“计划任务”,在性能和可靠性等多个方面都不理想

因此,我会使用 Ubuntu 下的 Crontab 来取代它,当然,在 Windows 下也可以使用任务计划达到同样的效果

首先,我们需要停用 WP-Cron,在 WordPress 安装目录的 wp-config.php 内添加:

define('DISABLE_WP_CRON', true);

然后使用 crontab -e 进入计划任务编辑,第一次进入时需要选择编辑器,我习惯选择 Nano(第一个选项)

进入编辑界面后,输入以下任务:

*/10 * * * * curl http://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
<span class="hljs-comment"># 将 example.com 替换为你的域名</span>

From https://easyengine.io/tutorials/wordpress/wp-cron-crontab

在 Windows 下,可以新建计划任务,运行以下命令以达到同样效果:

powershell "Invoke-WebRequest http://example.com/wp-cron.php?doing_wp_cron"

同时,我们会遇到一个问题,即任何人都可以访问 wp-cron.php,这可能会被利用进行 DOS 攻击

因此,我选择用一条 CloudFlare 规则,限制只允许服务器 IP 访问。当符合规则时阻止访问:

(http.request.full_uri contains "wp-cron.php" and ip.src ne 192.168.0.1) #以服务器 IP 取代 192.168.0.1

最后,记得在你的 CDN 内把 wp-cron.php 设置为动态(不缓存)

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注