让WordPress加载速度更快的小技巧:基于Nginx

说到WordPress网站加速,就不得不提到WP Rocket这款非常杰出的的WordPress缓存优化插件,但是除了插件本身的配置以外,还可以通过Rocket-Nginx获得更好的性能,大约可使你的网站提速30%

让WordPress加载速度更快的小技巧:基于Nginx

Rocket-Nginx is a Nginx configuration for the WordPress cache plugin WP-Rocket. It enables Nginx to serve directly previously cached files without calling WordPress or any PHP. It also adds headers to cache CSS, JS and medias in order to leverage browser’s cache by reducing request to your web server.

This project is sponsored by SatelliteWP, a WordPress maintenance service located near Montreal, Canada.

Rocket-Nginx 是WordPress缓存插件WP-Rocket的Nginx配置。它使 Nginx 能够直接提供以前缓存的文件,而无需调用 WordPress 或任何 PHP。它还添加标头以缓存 CSS、JS 和媒体,以便通过减少对 Web 服务器的请求来利用浏览器的缓存。

该项目由位于加拿大蒙特利尔附近的WordPress 维护服务商SatelliteWP 赞助。

项目地址:https://github.com/satellitewp/rocket-nginx

教程开始

第一步、禁用 WordPress自带的cron,请将以下代码添加到 wp-config.php

define( 'DISABLE_WP_CRON', true );

第二步、添加每 2 分钟执行一次 的cron 计划任务,注意替换成自己域名

wget -q -O - https://www.xxxx.com/wp-cron.php?doing_wp_cron &>/dev/null

第三步、安装Rocket-Nginx

cd /www/server/nginx/conf
git clone https://github.com/satellitewp/rocket-nginx.git

如果你的服务器处于国内无法访问 github.com导致无法正常安装,那你可以参考一下这篇文章

https://www.itbulu.com/git-github-outtime.html

第四步、生成默认配置的指令

cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php

执行成功后,会在conf.d目录下生成default.conf文件,该文件为默认配置文件,如果要自定义某些配置,则需要编辑 rocket-nginx.ini 文件,然后重新执行php rocket-parser.php

最后一步,将Rocket-Nginx 配置引入到Nginx的主机配置文件中 server 部分,示例如下:

server {
  ...
  
  # Rocket-Nginx 配置
  include rocket-nginx/conf.d/default.conf;
  
  ...
}

在站点设置——伪静态规则中添加下面这行代码:

# Rocket-Nginx 配置
include rocket-nginx/conf.d/default.conf;

完成以上步骤后,要记得重载Nginx配置!

如果你使用了CDN,务必接着看下去

按以上教程开启Rocket-Nginx模式后。

在Rocket-Nginx模式的Nginx配置文件中,在rocket-nginx.ini配置文件约24行有以下代码:

html_cache_control = "no-cache, no-store, must-revalidate"

其中no-store是优先级最高的禁止缓存,也就是说所有内容都不会被客户端缓存,这样一来不论是百度云加速还是其它CDN,均无法缓存了

must-revalidate:本地缓存过期前,可以使用本地缓存;本地缓存一旦过期,必须去源服务器进行有效性校验。

no-cache: 不管本地缓存是否过期,使用本地缓存前,一定要到源服务器进行缓存有效性校验。

我们只需要改一下,就能让CDN成功缓存页面,max-age=3600:缓存有效期3600秒

html_cache_control = "must-revalidate, max-age=3600, public"

如果是不长更新的网站,建议缓存有效期设置高一点,一周、一个月。

我设置是max-age=15552000,也就是半年有效,毕竟发布文章rocket会自动清理相应首页、分类页、标签页缓存,再配合自动刷新腾讯云缓存的插件。是可以把缓存有效期设置久一点的。

让WordPress加载速度更快的小技巧:基于Nginx

然后在rocket-nginx目录下,执行下面指令重新生成Nginx配置文件,再重启Nginx。

php rocket-parser.php

最后刷新一下CDN

值得注意的是

Rocket的这一个设置,如果关闭的话,

用户在未登录的情况下会直接访问静态缓存文件,登录的情况下则不会访问静态缓存文件。

这边建议打开这个功能。让用户在登录状态下也能享受网页秒开。

但是打开后会专门为用户生成他专享的缓存html文件(用户访问过一次的页面才会生成他专享的页面缓存,他没访问过的页面就没有缓存)

缓存文件在 网站根目录/wp-content/cache/wp-rocket/

如果用户多的话,对硬盘容量有要求哦。

让WordPress加载速度更快的小技巧:基于Nginx

这个方法好像失效了,设置后无法生成文章缓存。访问出现404报错。我现在选择只使用基础的插件功能,然后把/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-cache.php里面的两处Cache-Control的值改成public, max-age=86400, stale-while-revalidate=31536000, stale-if-error=31536000, immutable

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
搜索