长期以来很多 WordPress 站长们都以为 WordPress 这样的动态博客网站系统的 CDN 缓存效果是有限的,尤其是 WordPress 伪静态后的.html 是无法被 CDN 完美缓存的。其实这个是跟你的博客网站架构有关系,如果你的 WordPress 网站用的是单用户模式(就是只需要网站管理员登录,不需要前端访客注册登录!),是完全可以借助CloudFlare灵活的缓存规则来完美缓存的,那就是区分登录和未登录状态的精确缓存规则。这里提到的单用户模式其实就是一种标准普通的WordPress 博客站点,今天就给大家分享一个 CloudFlare 里标准普通的WordPress 博客站点智能区分登录和非登录状态自动缓存与否的缓存规则。
CDN 缓存的好处主要是体现在访客浏览体验上的,也就是大家常说的网页载入速度。不像 WordPress 插件(如:WP Super Cache 等)、PHP 扩展(如:Memcached、Redis 等)、Nginx 缓存等等这些都是相对于服务器后端的缓存加速,所以一个完美的 CDN 缓存规则方案对于博客站点的速度优化是最直观的。尤其是像 CloudFlare 这样以安全防御为主的 CDN,配合一个完美的缓存规则那就真的是“鱼与熊掌可兼得”了!
今天分享的这个缓存规则相对来说要复杂一些,需要创建至少三条【Cache Rules】,并且还要注意三条【Cache Rules】的顺序才能有效,为了方便大家使用,每条规则判断条件明月都会提供 CloudFlare 规则表达式,大家只需要复制粘贴到【表达式生成器】里即可自动生成规则判断条件了,唯一需要的就是修改判断条件里的域名yourdomain.com为你自己站点的域名即可。
三条规则的原理是:固定的链接都绕过缓存、登录和发表了评论的访客绕过缓存、除了上述两个情况的一律强制缓存。说白了就是正常的访客一律通过 CDN 缓存查看网站,只有登录和发表过评论的回源请求获取实时数据。其中登录和发表评论的状态是通过 cookie 来判断的。下面我们开始创建规则:
进入 CloudFlare 后台【缓存】——【Cache Rules】——创建规则:
第一条规则(不缓存目录链接)
规则名称:A 不缓存目录链接
当传入请求匹配时:
表达式:
(http.request.full_uri eq "https://yourdomain.com/wp-admin/*") or (http.request.full_uri eq "https://yourdomain.com/*preview=true*") or (http.request.full_uri eq "https://yourdomain.com/?s=*")
注意替换表达式里的域名为自己站点的域名哦!
第二条规则(登录评论不缓存)
规则名称:B 登录评论不缓存
当传入请求匹配时:
表达式:
(starts_with(http.request.full_uri, "https://yourdomain.com/") and http.cookie contains "wordpress_sec_") or (starts_with(http.request.full_uri, "https://https://yourdomain.com/") and http.cookie contains "wordpress_logged_in") or (starts_with(http.request.full_uri, "https://https://yourdomain.com/") and http.cookie contains "comment_")
注意替换表达式里的域名为自己站点的域名哦!
上述两个规则都是绕过缓存的,所以下面都统一如下图所示设置并保存规则:
第三条规则(缓存)
规则名称:C 缓存
当传入请求匹配时:
表达式:
(starts_with(http.request.full_uri, "https://yourdomain.com/") and not http.cookie contains "wordpress_sec_" and not http.cookie contains "wordpress_logged_in" and not http.cookie contains "comment_")
注意替换表达式里的域名为自己站点的域名哦!
因为这个规则是唯一一个需要缓存的,所以可以参考如下图所示的缓存规则配置:
这里的边缘 TTL 指的是 CDN 节点服务器上的缓存,缓存时间可以久一些,大家根据自己站点修改频率设置就行。
这里的浏览器 TTL 指的是在客户浏览器里保留的站点缓存,同样的,大家根据自己站点修改频率设置就是了,要注意的是浏览器缓存因为是保存在客户端的,我们是无法来清除更新的,所以这里不建议设置过长的缓存时间,否则会造成客户访问网站无法获取最新更新的问题,如上图所示是 2 个小时的浏览器本地缓存,过期后会自动请求 CloudFlare 节点数据更新的。
其他的设置大家参考上面的勾选开启即可,最后保存规则!
至此三条规则已经创建成功,我们会在 CloudFlare 后台【缓存】——【Cache Rules】里看到这三个规则的列表,首选确保每个规则都是开启状态,然后一定要按照规则名称顺序排列,如下图所示:
调整规则顺序只需要长按最左边的竖排六个点如上图箭头所指上下拖动即可,按照 A、B、C 的顺序先后排列即可。
最后记得要在【缓存】——【配置】里【清除所有内容】一下,让缓存规则生效。
理论上只要你的 WordPress 使用的主题是单用户模式的,上述三个缓存规则就能很好的运行并智能判断来缓存与否,可以大大的提升访客首次载入网页的速度。
当然,这三个缓存规则仅限于在标准普通的单用户模式WordPress 博客站点上使用,如果你用了多用户支持的 WordPress 主题、插件就不适用了,那需要大量的调试整理分析定制专属缓存规则的,这点儿一定要搞清楚,并且不是所有多用户的主题、插件可以实现 CDN 智能缓存规则的。
暂无评论内容