wp-rocket配合nginx实现纯静态化加速wordpress,Rocket-Nginx

自然
自然
自然
296
文章
305
评论
2019年3月2日23:25:32 6 2324字阅读7分44秒

WP Rocket缓存插件是当前最高效也是最灵活的WordPress静态缓存插件。WP Rocket在性能方面集成了所有最新功能:延迟图像加载,延迟加载javascipt,缩小html代码体积,连接和所辖javascript文件。WP Rocket还拥有自己的自托管爬虫机器人,它将访问您的站点并生成缓存文件,以便当人访问者访问您的站点时,他们会立即获得该页面的快速缓存版本。我们还有一个站点地图预载功能。

wp-rocket配合nginx实现纯静态化加速wordpress,Rocket-Nginx

然而它还是有一点毛病,那就是它依然是通过wordpress的php运行来提供缓存,不能算是真正的静态加载了,我们能不能跳过php执行的步骤,直接引导加载缓存文件呢?答案是可以的。

关闭wordpress的cron定时任务

你可能已经知道wordpress的cron定时任务并不是真正的定时任务,只有访问网站是才会执行定时任务,这个是不是有点假。为了确保cron计划任务在应用时运行,强烈建议禁用WordPress cron作业并创建真正的cron作业。

要禁用WordPress cron作业,请将以下行添加到wp-config.php

  1. define('DISABLE_WP_CRON', true);

然后我们手动常见一个定时任务,支持get、curl、php等几种方式触发任务。

我们设置定时任务每15分钟执行一次就可以了

  1. */15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
  2. */15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
  3. */15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null

使用虚拟机的小伙伴可以使用使用第三方任务监控,例如360云监控等。

编译并安装rocket-nginx

要使用该脚本,必须将其包含在实际配置中。如果您的WordPress网站尚未配置为使用Nginx运行,您可以检查WordPress文档的Nginx配置。

使用WP-Rocket的所有WordPress网站只需要一个Rocket-Nginx实例。也就是说,您可以根据需要生成任意数量的配置文件。

执行以下命令将模块克隆到你的Nginx安装目录:

  1. cd /usr/local/nginx    //打开安装目录
  2. git clone https://github.com/maximejobin/rocket-nginx.git  //开始克隆库

从2.0版开始,必须生成配置。要生成默认配置,必须重命名禁用的ini文件并运行配置解析器:

  1. cd rocket-nginx   //打开库目录
  2. cp rocket-nginx.ini.disabled rocket-nginx.ini    //重命名文件
  3. php rocket-parser.php  //执行PHP生成配置文件

这将生成default.conf可包含在所有网站中的配置。如果需要更改默认配置,可以编辑ini文件并在文件底部添加另一个部分。

然后,在配置文件中,必须包含配置。如果您的网站配置已经存在/etc/nginx/sites-available,则需要更改配置:

  1. server {
  2.   ...
  3.   # Rocket-Nginx configuration
  4.   include rocket-nginx/default.conf;
  5.   ...
  6. }

在重新加载配置之前,请确保对其进行测试,以免配置错误造成nginx瘫痪:nginx -t

如果没有报错我们重启nginx即可 service nginx reload

检验配置是否生效

您可能想要检查你的文件是否由Nginx直接提供,而不是调用任何PHP。为此,请打开rocket-nginx.ini文件并更改调试值:

debug = false

修改为:

debug = true

如果debug设置为0或1,则会出现以下标头:

  • X-Rocket-Nginx-Serving-Static:配置是否直接服务于缓存文件(绕过WordPress):是或否。

这会将以下标头添加到您的响应请求中:

  • X-Rocket-Nginx-Reason:如果Bypass设置为“No”,那么调用WordPress的原因是什么。如果“是”,则使用的文件是什么(URL)。
  • X-Rocket-Nginx-File:如果“是”,则使用的文件是什么(磁盘上的路径)。

无法调用缓存的几种原因

  • 发布请求:对Web服务器的请求是POST。这意味着数据已发送,答案可能需要与缓存文件不同(例如,发送评论时)。
  • 找到的参数:在请求中找到了一个或多个参数(例如?page = 2)。
  • 维护模式:找到.maintenance文件。因此,让我们的WordPress处理应该显示的内容。
  • Cookie:找到一个特定的cookie并告知不提供缓存页面(例如,用户已登录,使用密码发布)。
  • 特定的移动缓存已激活:如果您在WP-Rocket中激活了特定缓存(一个用于移动缓存,一个用于桌面),HTML文件(页面,帖子等)将无法直接提供,因为Rocket-Nginx无法知道该请求是由移动或桌面设备。
  • 文件未缓存:未找到该请求的缓存文件。

总结

Wp-rocket直接将网站的求情方式从将从NGINX→PHP-FPM→PHP→静态文件变成NGINX→静态文件。换句话说,您直接从NGINX提供静态文件,而不是在提供静态文件之前将请求传递给FPM然后传递给PHP,这不仅提高了加速速度,还节省了服务器资源。

继续阅读
weinxin
网科文媒
快来关注一下,你想要的这里都有喔!
自然
  • 文本由 发表于 2019年3月2日23:25:32
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:6   其中:访客  3   博主  3
    • avatar @回复 0

      试试吧

      • avatar owen @回复 1

        我的状态是 x-rocket-nginx-serving-static: No
        需要怎么弄呢?

          • avatar 自然 @回复 8

            @owen 默认是不为已登录用户缓存的,你退出刷新缓存就能看见了

          • avatar hubayi @回复 0

            如果多个站点要用的话是不是就要分别使用default.conf、default1.conf、defaultN.conf这样能?

              • avatar 自然 @回复 8

                @hubayi 多站点只需要修改头部的缓存位置和缓存密钥即可