Cloudways上能用WP Rocket吗?和Breeze怎么选、能不能同时装、怎么配置

蜗牛大人Cloudways主机教程

本文含推广链接:通过此链接购买,本站可获得佣金,不影响你的价格。了解详情

在Cloudways新建的WordPress网站,默认已经装好了免费的Breeze缓存插件。但有些人已经买了WP Rocket,或者习惯用WP Rocket,就会问:

  • Cloudways上能不能用WP Rocket?
  • Breeze和WP Rocket能不能同时装?
  • 换成WP Rocket要怎么设置,才不会和服务器缓存打架?
  • 用了Cloudflare,还要不要留着Breeze?

本文按Cloudways官方帮助文档,把这几个问题讲清楚。Breeze本身怎么配置,在《Cloudways网站怎么加速?》里已经讲过,这里不重复。

本文按Cloudways官方帮助文档整理,文中带标注的截图来自官方文档。官方的WP Rocket教程部分步骤比较旧(还把W3 Total Cache写成默认缓存插件),本文已按现在的默认情况做了说明,界面以你实际看到的为准。

先说结论

你的情况建议
没特别需求,网站在Cloudways上新建直接用预装的Breeze,免费,官方推荐
已经买了WP Rocket,想用可以用,官方支持,但要按下面的步骤处理Varnish和Cloudflare
同时用Breeze和WP Rocket做页面缓存不要。两套缓存插件同时工作会冲突
用Cloudways的Cloudflare Enterprise,并且想用WP RocketBreeze要留着,但把Breeze所有缓存和优化选项关掉

官方在《Which WordPress Cache Plugin Should I Use?》里列出的Cloudways支持的缓存插件有三个:Breeze(Cloudways自己开发,官方推荐)、WP Rocket(付费)、W3 Total Cache(免费但配置对新手有难度)。

我们的建议:不确定就用Breeze。WP Rocket功能更多,但要付费,也多了配置的环节。

Breeze到底是什么?有什么用?

Breeze是Cloudways开发的免费插件,官方说明:

  • 它是Cloudways的默认WordPress缓存插件,WordPress、WooCommerce和多站点新建时都预装,默认已经启用并配好了推荐设置;
  • 支持页面缓存、Gzip、浏览器缓存、代码压缩合并、数据库优化、CDN接入和Varnish;
  • 和Cloudways平台100%兼容。
Cloudways上能用WP Rocket吗?和Breeze怎么选、能不能同时装、怎么配置(图 1)
Cloudways上能用WP Rocket吗?和Breeze怎么选、能不能同时装、怎么配置(图 1)

Breeze还有一个容易被忽略的作用:通知Varnish清缓存。

Cloudways的服务器上默认有Varnish缓存。官方说明,不装Breeze(或类似的插件),Varnish发现不了网站内容有没有变化,会一直返回旧内容,直到缓存过期(默认4小时)或者手动清除。装了Breeze,在你发布、更新、删除文章和页面,或者启用、停用插件和主题时,会自动清除对应的Varnish缓存。

所以换WP Rocket时,必须让WP Rocket也能通知Varnish,这是下面配置里最关键的一步。

换成WP Rocket,怎么做?

第一步:处理掉Breeze

官方的步骤要求先把已有的缓存和优化插件都停用并删除,避免冲突。对应到现在的情况:

  • 没有用Cloudways的Cloudflare Enterprise:停用并删除Breeze;
  • 用了Cloudflare Enterprise的Smart Cache Purge:Breeze要保持安装和启用,但要把Breeze里所有缓存和优化的设置关掉。官方说明,在Cloudways后台配置Smart Cache Purge时,会自动安装Breeze(如果没装)并关掉所有配置,避免和你的缓存插件冲突。

第二步:安装并启用WP Rocket

  1. 到WP Rocket官网购买,下载zip安装包;
  2. 登录WordPress后台,「插件」→「安装插件」→「上传插件」,上传zip并启用;
  3. WP Rocket的授权在启用时自动验证,不需要填API密钥。

启用之后,页面缓存是默认开启的;浏览器缓存、GZIP等规则会自动写进.htaccess。

第三步:开启Varnish自动清除

Cloudways的服务器默认启用了Varnish。进入WP Rocket设置的「Varnish」页签,勾选「Enable the Varnish caching auto-purge」。

Cloudways上能用WP Rocket吗?和Breeze怎么选、能不能同时装、怎么配置(图 2)
Cloudways上能用WP Rocket吗?和Breeze怎么选、能不能同时装、怎么配置(图 2)

官方说明,勾选之后,WP Rocket每次清缓存时,会一并清除Varnish缓存,不需要再装Varnish HTTP Purge这类插件。Cloudways也提供OPCache,WP Rocket的后台顶部工具栏会出现「Purge OPCache」的链接。

第四步:压缩合并和Varnish冲突时,加一条排除

WP Rocket的CSS/JS压缩合并,和Cloudways的Varnish一起用的时候,官方的建议是在WP Rocket的排除URL里加一条:

/(.*)/?f=(.*)

这样压缩合并才能正常运行。(官方页面上这条规则的星号可能显示不全,如果配置时有疑问,以WP Rocket的官方文档为准。)

第五步:延迟加载和压缩,开了要检查

LazyLoad(图片延迟加载)和压缩合并,开启之后要在未登录的浏览器窗口里检查网站是否正常。有问题的话关掉对应选项,清除缓存,网站就恢复了。

用了Cloudflare,缓存怎么处理?

要不要关掉缓存插件?

官方说明,启用Cloudflare不需要关掉Breeze或WP Rocket。

Cloudflare橙色云朵开着时,Varnish会被绕过

Cloudflare作为反向代理(橙色云朵)工作时,如果Cloudflare有缓存,会直接返回缓存的内容,不会到达服务器的Varnish。这是正常现象。只有Cloudflare没有缓存时,请求才会到Varnish。

所以网站更新之后,除了清WP Rocket的缓存,Cloudflare的缓存也要清除。官方的建议:

  • Cloudflare的缓存规则在Cloudflare后台设置,同时检查WP Rocket的设置有没有和它重复;
  • Cloudflare Enterprise版本支持自动清除缓存;如果WP Rocket没有这个功能,更新网站之后要手动清除。

免费Cloudflare的接入和缓存设置,见《Cloudways怎么用免费Cloudflare?》。

用了代理,Varnish清除可能不生效

官方指出,在Cloudflare这类代理后面,WP Rocket清除Varnish可能无效,需要添加一段代码,告诉WP Rocket清除请求要发给哪个主机:

  1. 在wp-content目录里新建一个文件夹,名字叫mu-modules(不是其他名字);
  2. 新建一个PHP文件,保存为wp-rocket-varnish-purge-proxy.php,内容里的example.com改成你自己的域名:
<?php
/**
 * Plugin Name: WP Rocket | Varnish purge behind proxy
 */
add_filter( 'rocket_varnish_purge_request_host', '__rocket_varnish_custom_hostname' );
function __rocket_varnish_custom_hostname() {
    return 'example.com';
}

add_filter( 'rocket_varnish_ip', '__rocket_varnish_custom_ip' );
function __rocket_varnish_custom_ip() {
    return 'localhost';
}
  1. 把文件上传到mu-modules文件夹,上传方法见《Cloudways后台常用设置:SFTP/SSH连接、PHP参数修改、Staging测试站》;
  2. 停用再启用一次WP Rocket,必要时手动清除一次代理的缓存。

怎么确认Varnish清除成功了:在Chrome里打开开发者工具(Ctrl+Shift+I)的「Network」页签,刷新网站,点开第一个请求,查看响应头里的Age值,官方用这个值来判断Varnish缓存有没有被清除。

为什么不要两个缓存插件同时用?

Breeze和WP Rocket都在做页面缓存、压缩合并、浏览器缓存。同时启用,会出现重复缓存、样式和脚本被处理两遍、清缓存互相不同步的问题。官方的WP Rocket教程第一步就是先停用其他缓存和优化插件。

只有一种情况两个插件会同时存在:用了Cloudflare Enterprise的Smart Cache Purge,这时Breeze只负责触发Cloudflare清缓存,它自己的功能全部关闭,页面缓存和优化交给WP Rocket。

常见问题

WP Rocket比Breeze快吗?

官方没有给对比数据。WP Rocket功能更多,比如生成关键CSS、缓存预加载这类,需要这些功能再考虑。普通的企业站和博客,Breeze加上Varnish已经够用。

我换了WP Rocket,更新网站后前台还是旧内容?

先检查WP Rocket的Varnish页签有没有勾选自动清除;用了Cloudflare的话,还要清除Cloudflare的缓存。

不装任何缓存插件行不行?

可以,但Varnish不会知道内容何时变化,更新之后最长要等4小时(默认缓存时间)才会显示新内容,或者到Cloudways后台手动清除。所以建议保留Breeze。

WP Rocket和Object Cache Pro冲突吗?

官方说明WP Rocket和Varnish、OPCache、Object Cache Pro都能配合使用。

官方的WP Rocket教程写的默认插件是W3 Total Cache,对吗?

那是旧版说明。现在Cloudways新建的WordPress默认预装的是Breeze,官方的缓存插件选择文章也把Breeze列为官方推荐。

总结

Cloudways上,不确定就用预装的Breeze:免费,官方推荐,会自动通知Varnish清缓存。

要用WP Rocket也可以:先停用并删除Breeze(用了Cloudflare Enterprise的Smart Cache Purge例外,Breeze留着但关掉所有选项),上传安装WP Rocket,在「Varnish」页签勾选自动清除,压缩合并加上排除规则,在Cloudflare代理后面时加上mu-modules里那段代码。无论用哪个,页面缓存插件只保留一个。

更多Cloudways的使用教程,可以查看《Cloudways主机教程汇总》。

文章版权归作者所有,转载请注明出处:https://woniune.com/posts/cloudways-wp-rocket-vs-breeze/
上一篇Cloudways后台卡、定时任务不准?用Cron Optimizer把WP-Cron换成服务器定时任务

相关推荐