如何为您的WordPress站点设置Cloudflare全页缓存

2019年3月25日

Cloudflare是一种流行的服务,提供DNS,CDN,安全服务等。 WordPress网站所有者经常使用它来加速和保护他们的网站。 默认情况下,Cloudflare会自动缓存CSS,JS和图像等静态资源。 通过一些额外的工作,Cloudflare还可以配置为“缓存所有内容”,这意味着您的网站的静态HTML副本将通过Cloudflare遍布全球的广泛数据中心网络进行缓存和提供。 在这篇文章中,您将了解有关Cloudflare的“整页缓存”功能的更多信息,以及它是否适合您的WordPress网站。

谁应该使用整页缓存?

Cloudflare的整页缓存功能并不适合所有人。通常,具有大量动态网站的WordPress用户不应启用整页缓存。动态WordPress网站的一个例子是WooCommerce商店,它需要“添加到购物车”和计费功能。随着Cloudflare的整页缓存开启,一个客户的购物车将被缓存并提供给其他客户。同样,结帐页面上的名称和地址等私人结算明细也可以缓存。

如果您正在运行标准博客或简单的商业网站,启用Cloudflare整页缓存可能会显着提升性能。唯一要记住的是,WordPress的默认评论系统可能无法满足整页缓存 — 在Cloudflare缓存清除之前,新评论不会显示。根据上述信息,本网站是Cloudflare全页面缓存的理想选择,因为它几乎完全是静态的 — 没有商​​店功能,没有评论,也没有联系表格。

如何设置Cloudflare整页缓存

要在WordPress网站上设置Cloudflare整页缓存,您必须制作如下图所示的页面规则。确保使用您自己的域名替换 decrypto.net

Cloudflare全页缓存速度测试

以下是禁用和启用Cloudflare整页缓存的两个速度测试示例。 作为参考,我的原始服务器位于洛杉矶,并且使用来自旧金山和东京的KeyCDN速度测试工具进行速度测试。

旧金山 — 禁用整页缓存

由于我的原始服务器位于洛杉矶,因此在禁用Cloudflare整页缓存时性能已经非常出色。

旧金山 — 启用整页缓存

启用Cloudflare全页面缓存后,页面加载时间减少了40%,仅为98.913 ms。

东京 — 禁用整页缓存

当源服务器和客户端之间存在显着的地理距离时,Cloudflare整页缓存的效果更加明显。 由于我使用了用于Decrypto的 Kinsta的高性能网络托管,因此从东京运行KeyCDN的速度测试工具仍然禁用Cloudflare全页缓存 导致页面加载时间非常快,为587.867毫秒。

东京 — 启用整页缓存

启用Cloudflare全页面缓存后,页面加载时间减少了89%,达到64.395 ms。 换句话说,Cloudflare整页缓存使来自东京的访问者能够更快地浏览这个网站9倍 — 这非常重要,因为Decrypto还有日文,韩文和中文内容。

绕过Cloudflare整页缓存

有时,在整个网站范围内启用整页缓存并不是一个好主意。即使在像这样的相对静态的站点上,也有一些页面不应该被Cloudflare的整页缓存功能缓存 — 主页和归档页面就是两个例子。幸运的是,有几种不同的方法可以选择性地绕过WordPress网站上的Cloudflare整页缓存。

Cloudflare WordPress插件

Cloudflare的官方WordPress插件具有“自动缓存清除”功能,可在您更改网站外观时自动清除缓存。 “据推测,这意味着如果发布新帖子或者甚至更新现有帖子,插件将自动清除缓存。我个人不在我的WordPress网站上使用这个插件,因为我喜欢安装尽可能少的插件。如果这个插件按照宣传的方式工作,它将在必要时通过自动清除Cloudflare的缓存来充当旁路。

选择性Cloudflare页面规则

设置选择性页面规则是我目前在Decrypto上用于Cloudflare整页缓存的方法。这种方法的优点是设置方便,容易。这种方法的缺点是它不是免费的,因为它通常需要三个以上的页面规则。对我来说,这不是一个问题,因为我每月支付20美元购买Cloudflare的专业计划,该计划包含20个页面规则和一系列其他有用的功能。

这是我的Cloudflare页面规则的样子。

由于页面规则在“首先匹配,先服务”的基础上工作,因此“catch-all”URL * decrypto.net / * 位于优先级列表的末尾。 catch-all URL上方是不应启用整页缓存的各种URL。 我喜欢这种方法,因为它提供了对Cloudflare的整页缓存的非常精细的控制。 如果您正在使用免费的Cloudflare计划并希望使用此方法,我建议您每月支付5美元的额外五页规则。

Origin Server Cache-Control

Cloudflare的“缓存控制”设置可以配置为“尊重现有标头” — 这意味着Cloudflare不会覆盖原始服务器的缓存控制设置。 因此,您可以通过将以下PHP代码添加到相应的页面模板来禁用Cloudflare缓存某些页面。

<?php

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0," false);
header("Pragma: no-cache");

?>

根据您的技术技能和服务器配置级别,添加自定义缓存控制标头可能是绕过某些页面上的整页缓存的合适方法。 例如,将上面的代码添加到 index.php 模板会告诉Cloudflare不要缓存您的主页。

结论

Cloudflare整页缓存是加速WordPress网站的强大工具 — 特别是对于国际访问者。 如果您正在运行普通博客或静态商业网站,我强烈建议您考虑设置Cloudflare整页缓存。 如果您正在运行像WooCommerce商店或bbPress论坛这样的动态网站,那么通过在特定的URL结构上实施Cloudflare全页面缓存,仍然可以获得它的好处。


如有问题

請联絡本人的Twitter帐户或电子邮箱.