WP Rocket是一款非常优秀的WordPress缓存插件,但对于Nginx站点来说,除了插件相关配置之外,还可以通过Rocket-Nginx获得更佳性能,大约可提速30%。注意:此方法不适用与Apache,因为插件会自动生成.htaccess相关规则。
本文介绍的方法出自于项目 Rocket-Nginx,创建于Maxime Jobin,现在由SatelliteWP进行维护,且获得 WP Rocket 的官方推荐,开源地址:https://github.com/SatelliteWP/rocket-nginx。
本站页面实时加载速度
页面加载时间: 正在计算… 毫秒
实现原理
我们知道 WordPress 有个进程专门用来在指定的时间周期或者将来的某个时间点运行特定的计划任务,比如定时发布日志等。这个功能 WordPress 就是通过 WP-Cron 来实现的,它会在网站每次有人访问或者在后台工作的时候,都会重复检查当前是否有任务要执行,这样会引起如下问题:
- 增加服务器加载时间,特别是网站访问用户特别多的时候;
- 当网站的访问用户很少或者加载了静态缓存插件,指定的任务可能又不运行。
另外,Rocket-Nginx是WP Rocket插件的一个Nginx配置,它使Nginx能够直接访问先前缓存的文件,而无需调用WordPress或任何PHP程序。它还为CSS、JS 和媒体文件添加缓存标头,利用浏览器的缓存来减少对 Web 服务器的请求。
正因为通过Nginx直接调用缓存,不再通过PHP程序,所以原来的计划任务(自动清除到期缓存等)可能会不起作用。因为WP-Cron不是真正的 Cron 计划任务,只有在站点被访问时才会执行,基于这个情况,建议阻止 WordPress 在后台执行 WP-Cron,而是使用服务器的真正的定时 Cron 功能来执行。
第一步、禁用 WordPress cron,请将以下代码添加到wp-config.php
:
define( 'DISABLE_WP_CRON', true );
第二步、每 15 分钟手动执行一次 cron 计划任务(对于大多数网站来说应该足够了):
*/15 * * * * wget -q -O - https://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
或者:
*/15 * * * * curl https://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
或者:
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
备注:请替换https://www.website.com/为使用网站的网址。
如果使用的是宝塔面板,则可以如下图:
安装 Rocket-Nginx – WP Rocket的Nginx配置
同一服务器内所有使用 WP Rocket 的 WordPress 网站只需要安装一次 Rocket-Nginx 实例。下面依然以宝塔的LNMP环境为例,先查看 nginx.conf 的具体位置再执行以下安装指令:
安装指令
Nginx 配置 (nginx.conf) 默认情况下位于/www/server/nginx/conf
cd /www/server/nginx/conf
git clone https://github.com/satellitewp/rocket-nginx.git
或者:
如果您使用的是 Ubuntu,您的 Nginx 配置 (nginx.conf) 应位于:/etc/nginx/
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
如果执行错误,可能是因为国内服务器无法访问 github.com 造成的,解决方法如:
以上设置完成后,需重载 Nginx 配置。
service nginx reload
提示:最后要刷新所有包括(浏览器)缓存后,方可检测加速效果。
检测Rocket Nginx配置是否生效
打开rocket-nginx文件夹下的rocket-nginx.ini文件,将其中的debug = false改为debug = true,如图所示
注意:每次修改设置rocket-nginx.ini文件,都需要重新运行解析器来重新生成Nginx配置文件。
php rocket-parser.php
将网站的缓存清理掉,重新打开自己的站点测试一下,然后用谷歌浏览器看网页的标头
如有不懂之处,可以在下方评论区与我互动哦~