0成本实现WordPress登录与访客缓存分离:Cloudflare免费版终极教程

جوړول غواړيWordPress登录动态与访客静态缓存彻底分离?本教程教你用Cloudflare免费版0成本实现Cookie缓存优化,提升网站速度与用户体验,站长必备的终极指南!

Cloudflare免费版按Cookie缓存终极教程:零成本实现登录动态/访客静态分离

99%用Cloudflare免费版的WordPress站长,都在浪费一半以上的服务器性能。

我见过太多人陷入两个极端。

要么完全不缓存HTML,每次访客访问都要回源拉取数据。

要么直接全站缓存HTML,结果出现用户登录错乱、评论不显示、后台操作失效的问题。

很多人以为按Cookie区分缓存是付费计划的专属功能。

毕竟Cloudflare官方明确写着,只有Business和Enterprise计划才能在有Cookie时绕过HTML缓存。

Business计划每月200美元起,对于个人站长和小博客来说,这笔开支完全没有必要。

直到我在2023年4月发现了一个被大多数人忽略的技术技巧。

这个技巧第一次完整展示了如何用免费版支持的运算符,实现和付费计划完全一样的按Cookie缓存效果。

我自己用这个方法配置了十几个网站,效果超出预期。

我的个人博客服务器CPU负载从平均45%降到了12%。

页面首次加载时间缩短了5秒。

每月服务器带宽消耗减少了68%。

不过最初的实现方式有两个明显的不足。

它只支持单个HTTPS域名,不支持泛域名。

它没有考虑到很多网站还在使用HTTP跳转或者同时支持HTTP和HTTPS的情况。

我在原有思路的基础上做了全面优化,解决了这两个问题。

现在我就把针对*.etUFO.org这样的泛域名、同时支持HTTP和HTTPS的完整配置方法分享给大家。

为什么免费版能实现付费版的按Cookie缓存功能?

很多人不知道,Cloudflare免费版和付费版的核心区别,不在于能不能实现某个功能。

而在于实现同一个功能的便捷程度。

0成本实现WordPress登录与访客缓存分离:Cloudflare免费版终极教程

付费版提供了Matches正则运算符,可以用一行正则表达式匹配所有需要绕过的Cookie。

但免费版不支持这个运算符,使用时会收到“not entitled: the use of operator Matches is not allowed”的错误提示。

Cloudflare官方文档明确规定,Matches运算符需要Business计划或WAF Advanced计划才能使用。

这也是为什么网上大部分教程都告诉你,按Cookie缓存必须升级付费计划。

但我经过反复测试和研究,找到了一个关键的突破口。

WordPress和WooCommerce的登录Cookie都有固定的前缀。

WordPress Cookies 前缀:

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

我们不需要用正则匹配所有Cookie,只需要用免费版支持的contains运算符,检查Cookie中是否包含这些固定前缀即可。

这个思路非常巧妙。

它避开了付费版的专属功能,用最基础的运算符实现了完全相同的效果。

而且性能比正则匹配还要好,因为contains运算符的计算开销远小于正则匹配。

针对*.etUFO.org的完整配置步骤(HTTP/HTTPS通用)

整个配置过程只需要创建3条缓存规则。

规则的顺序非常重要,必须严格按照我给出的顺序排列。

如果顺序错了,整个缓存逻辑都会失效。

Cloudflare缓存配置截图

规则1:绕过必须动态的路径(优先级最高)

这条规则的作用是,让后台、预览页、用户中心、搜索页永远不缓存。

这些页面必须实时从源服务器获取内容,否则会出现严重的功能问题。

我优化后的表达式同时支持所有子域名和HTTP/HTTPS协议。

你不需要为每个子域名单独创建规则。

也不需要为HTTP和HTTPS分别创建规则。

表达式如下:

ends_with(http.host, ".etufo.org") and (starts_with(http.request.uri.path, "/wp-admin/") or http.request.uri contains "preview=true" or starts_with(http.request.uri.path, "/前台用户中心/") or starts_with(http.request.uri.path, "/?s="))

操作选择「绕过缓存」。

把这条规则放在所有缓存规则的最顶部。

Cloudflare缓存配置截图

规则2:绕过登录和评论用户(优先级第二)

这条规则的作用是,让已登录用户和已评论用户直接回源获取动态内容。

这样可以保证用户看到自己的个人信息,评论可以实时显示。

最初的实现方式用的是starts_with(http.request.full_uri, "https://你的域名/").

我把它改成了ends_with(http.host, ".etufo.org").

这个改动是整个优化的核心。

http.host只包含域名部分,不包含协议和路径。

لپارهends_with匹配.etufo.org,会自动匹配etufo.org،www.etufo.org،blog.etufo.org等所有子域名。

同时自动匹配HTTP和HTTPS协议,不需要做任何额外配置。

原生WordPress版表达式:

ends_with(http.host, ".etufo.org") and (http.cookie contains "wordpress_sec_" or http.cookie contains "wordpress_logged_in" or http.cookie contains "comment_")

如果你用了WooCommerceای کامرس插件,需要加上WooCommerce的Cookie前缀。

WooCommerce增强版表达式:

ends_with(http.host, ".etufo.org") and (http.cookie contains "wordpress_sec_" or http.cookie contains "wordpress_logged_in" or http.cookie contains "comment_" or http.cookie contains "woocommerce_")

操作同样选择「绕过缓存」。

把这条规则放在规则1的下面。

Cloudflare缓存配置截图

规则3:缓存未登录访客的静态HTML(优先级最低)

这条规则的作用是,让未登录的访客直接从Cloudflare CDN获取缓存的HTML页面。

这是提升网站速度和降低服务器负载最关键的一步。

同样,我用ends_with(http.host, ".etufo.org")替代了原来的协议+域名写法。

实现了泛域名和双协议的自动兼容。

原生WordPress版表达式:

ends_with(http.host, ".etufo.org") and not http.cookie contains "wordpress_sec_" and not http.cookie contains "wordpress_logged_in" and not http.cookie contains "comment_"

WooCommerce增强版表达式:

ends_with(http.host, ".etufo.org") and not http.cookie contains "wordpress_sec_" and not http.cookie contains "wordpress_logged_in" and not http.cookie contains "comment_" and not http.cookie contains "woocommerce_"

操作选择「符合缓存条件」。

建议开启以下选项:

缓存欺骗盔甲。

更新时不提供过时内容

把这条规则放在所有缓存规则的最底部。

Cloudflare缓存配置截图

Cloudflare缓存配置截图

Cloudflare缓存配置截图

配置后必须做的3件验证事

配置完成后,不要直接关掉页面。

你需要做三个简单的验证,确保规则正常工作。

第一个验证,检查未登录状态的缓存情况。

打开浏览器的无痕模式。

按F12打开开发者工具,切换到网络标签。

访问你的网站首页。

查看响应头中的cf-cache-statusډګر.

如果显示HIT,说明缓存命中,规则正常工作。

第二个验证,检查登录状态的缓存情况。

在普通浏览器窗口登录你的د WordPress پس منظر.

同样按F12打开开发者工具。

访问网站首页。

查看响应头中的cf-cache-statusډګر.

如果显示DYNAMIC,说明登录用户成功绕过缓存。

第三个验证,检查评论用户的缓存情况。

用另一个浏览器或者无痕模式发表一条评论。

刷新页面。

查看响应头中的cf-cache-statusډګر.

如果显示DYNAMIC,说明评论用户也成功绕过缓存。

如果验证不通过,首先检查规则的顺序是否正确。

然后检查是否有其他Page Rules或者缓存规则和这三条规则冲突。

我在实际测试中发现,Page Rules的优先级高于缓存规则,会覆盖缓存规则的设置。

Cloudflare缓存配置截图

常见问题与进阶优化

很多人问我,缓存过期时间应该设置多久。

我建议在源服务器设置HTML文件的缓存过期时间为1小时。

这样既可以保证内容的新鲜度,又可以充分利用CDN的缓存优势。

如果你发布了新文章或者更新了页面,可以在Cloudflare后台手动清除对应页面的缓存。

也可以安装Cloudflare官方的د ورڈپریس پلگ ان,实现发布内容时自动清除缓存。

还有人问,这个方法会不会影响网站的SEO.

完全不会。

搜索引擎爬虫都是未登录状态,会和普通访客一样获取缓存的页面。

缓存后的页面加载速度更快,反而会提升搜索引擎的排名。

根据Google的核心网页指标报告,页面加载速度每提升1秒,转化率可以提升7%。

这个配置带来的速度提升,不仅能提升用户体验,还能直接带来更多的流量和收入。

پایله

在这个算力即成本、速度即竞争力的数字时代,每一分服务器资源的优化,都是对数字资产的增值。

很多人追求昂贵的付费服务,却忽略了免费工具中隐藏的巨大潜力。

Cloudflare免费版的能力,远比大多数人想象的要强大得多。

最好的技术方案,从来不是最贵的,而是最适合你的。

对于99%的个人站长和中小企业来说,这个零成本的按Cookie缓存方案,已经完全能够满足需求。

它不需要你支付每月200美元的费用,却能带来和付费计划几乎完全一样的性能提升。

技术的本质是解决问题,而不是堆砌昂贵的工具。

当我们学会用最基础的组件搭建出高效的系统时,我们才实际掌握了技术的精髓。

如果你在使用Cloudflare免费版,并且你的网站是基于WordPress搭建的,我强烈建议你按照这个教程配置一下。

你会发现,你的网站速度会有质的飞跃,服务器负载会大幅下降。

这是一个投入5分钟,受益一整年的优化操作。

不要让免费的资源白白浪费,行动起来,让你的网站跑得更快。

امید چن وییلینګ بلاګ ( https://www.chenweiliang.com/ ) 分享的《0成本实现WordPress登录与访客缓存分离:Cloudflare免费版终极教程》,对您有帮助。

د دې مقالې لینک شریکولو ته ښه راغلاست:https://www.chenweiliang.com/cwl-33962.html

د نورو پټو چلونو د خلاصولو لپاره، زموږ د ټیلیګرام چینل سره یوځای کیدو ته ښه راغلاست!

که مو خوښه شوه لایک او شریک کړئ! ستاسو شریکول او خوښول زموږ دوامداره هڅونه ده!

 

评论 评论

ستاسو بریښنالیک پته به خپره نشي. اړین ساحې کارول کیږي * لیبل

پاس شئ