创客研究
创客分享

按照登录状态Cookies配置Cloudflare缓存教程

Cloudflare是功能非常强大的免费CDN提供商。有不少使用Cloudflare的WordPress站长都希望自己的网站快一点。但是如果配置Cloudflare将网站缓存所有内容(HIT)可能会使 WordPress 登录和评论出错,比如前端不更新或缓存其它用户的登录信息。所以大部分WordPress站点使用CDN都只缓存了JavaScript、CSS和图片等静态文件。

有细心的站长可能已经发现了Cloudflare支持“使用 WordPress/WooCommerce 缓存静态 HTML”功能,但是这仅限于Cloudflare Business 和 Enterprise 计划客户才能使用,免费用户无法享受此功能。

所有 Cloudflare 计划中的客户都可配置缓存 HTML 文件。但只有 Business 和 Enterprise 计划中的客户才能在发送带有请求的 Cookie 的任何时候绕过 HTML 缓存

Create Page Rules中的Bypass Cache on Cookie设置

这个功能可以实现以下目标:

  • 未登录的访客(没有登录Cookies)访问站点时直接提供CDN完全缓存网站页面(HIT),无需回源,提升速度并减轻服务器负担;
  • 已登录的用户(具有登录Cookies)或者发送了评论的用户CDN就回源并提供动态内容(DYNAMIC),确保前端实时更新;
  • 同时两者缓存互相隔离,不会出现未登录访客可以看到已登录用户的前台信息。

由于大部分网站(包括但不限于WordPress)都是通过设置Cookies来实现用户登录或评论等功能的,我们可以让Cloudflare通过判断Cookies来实现自动判断用户登录和评论情况,从而区分是否回源。这样不仅可以提升访客的体验,还可以减轻服务器的负担,甚至降低碳排放,何乐而不为呢?

下面,我将以WordPress为例,告诉大家如何免费实现这个功能。

配置流程:

注:为方便配置,所有规则均提供表达式,您可以将表达式黏贴至表达式输入框后再切换回生成器可视化编辑。请务必将“您的域名”更换为您自己的域名。

1.观察Cookies特征

通过阅读Cloudflare官方给出的文档,我们可以发现以下规律:

WordPress(原生)wp-.*|wordpress.*|comment_.*
具有 WooCommerce 的 WordPress    wp-.*|wordpress.*|comment_.*|woocommerce_.*
WordPress Cookies特征表

2.打开配置页面

打开Cloudflare配置页面,依次点击要配置的域名-缓存-Cache Rules。

配置页面路径

3.创建第一个缓存规则

按照下图创建缓存规则,选择“绕过缓存”,并把这个规则放在本流程的顶端。

这个规则的目的是防止Cloudflare缓存管理后台、前台用户中心、搜索界面和预览界面,以免缓存他人信息。

(http.request.full_uri eq "https://您的域名/wp-admin/*") or (http.request.full_uri eq "https://您的域名/*preview=true*") or (http.request.full_uri eq "https://您的域名/前台用户中心/*") or (http.request.full_uri eq "https://您的域名/?s=*")
第一个规则

4.创建第二个缓存规则

按照下图创建缓存规则,选择“绕过缓存”,并把这个规则放在本流程的第二个。

这个规则的目的是实现已登录的用户(具有登录Cookies)或者发送了评论的用户CDN请求回源并提供动态内容(DYNAMIC),确保前端实时更新。

(starts_with(http.request.full_uri, "https://您的域名/") and http.cookie contains "wordpress_sec_") or (starts_with(http.request.full_uri, "https://您的域名/") and http.cookie contains "wordpress_logged_in") or (starts_with(http.request.full_uri, "https://您的域名/") and http.cookie contains "comment_")
第二个规则

5.创建第三个缓存规则

按照下图创建缓存规则,并把这个规则放在本流程的底部。

这个规则的目的实现是未登录的访客(没有登录Cookies)访问站点时直接提供CDN完全缓存网站页面(HIT),无需回源。

(starts_with(http.request.full_uri, "https://你的域名/") and not http.cookie contains "wordpress_sec_" and not http.cookie contains "wordpress_logged_in" and not http.cookie contains "comment_")
第三个规则

此处选择“符合缓存条件”,下方设置可以按自己的实际情况配置,推荐打开以下选项:缓存欺骗盔甲,以便缓存静态资源。

本站配置

6.检查缓存规则顺序

请确保3个规则按照上述顺序排序,可以拖动或点击箭头对规则重新排序。

排序示范

7.验证规则生效情况

可在浏览器的InPrivate标签页中按F12打开开发者工具,在网络一栏中查看对应网址的“cf-cache-status”。正常情况下,您将看到以下内容,这表示配置成功:

  • 未登录:cf-cache-status:HIT
  • 登录后:cf-cache-status:DYNAMIC

如果有问题,请检查“页面规则”等中是否有项目与其冲突。

完成此配置后,您可以自行检查并完善其它配置,此处不再赘述。

效果演示

此配置可以对未登录访客有明显加速效果,同时减轻服务器的负担。

本站优化后测速效果

希望这个教程可以帮助有需要的站长;同时也希望Cloudflare可以继续提供优秀的加速服务,开发更多先进的功能!

参考文献:

  • https://developers.cloudflare.com/cache/how-to/cache-rules/
  • https://developers.cloudflare.com/support/other-languages/%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87/%E4%BD%BF%E7%94%A8-wordpresswoocommerce-%E7%BC%93%E5%AD%98%E9%9D%99%E6%80%81-html/

注:本文是经过反复研究得出的实践成果,请各位站长尊重知识产权,转载时注明出处,感谢配合!

赞(4) 打赏
版权声明:知识共享许可协议
本网站作品除特殊标注外均采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

文章名称:《按照登录状态Cookies配置Cloudflare缓存教程》
文章链接:https://www.devhjz.com/archives/16/
本站资源仅供个人学习交流。建站不易,请不要直接抄袭原文。不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

觉得文章有用就打赏一下文章作者。

非常感谢你的打赏,我们将继续给你更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

登录

找回密码

注册