使用 Cloudflare CDN 后访问速度变慢?
教你自定义缓存规则解决问题
使用 Cloudflare CDN 后,是否遇到网站打开速度缓慢,或使用 itdog 等测速工具时,看到一片“中国红”?这通常由以下两种原因导致:
- Cloudflare 分配的 IP 被墙或速度慢
- 默认缓存设置不当,Cloudflare 默认只缓存部分文件
本文主要讲解如何通过自定义缓存规则解决第二个问题。关于 IP 优选方法,请参考:二叉树树的博客。
一、了解缓存的作用
缓存是指 CDN 服务商将你网站的文件存储到全球各地服务器,当用户访问时直接从 CDN 节点返回缓存内容,提升网站响应速度。
由于 Typecho 为动态博客系统,需要绕过所有动态页面,仅缓存静态资源。
- 动态资源:Typecho 后台、评论区、各文章主页面(需实时显示评论)
- 静态资源:CSS、JS、图片等静态文件
二、自定义缓存规则
1. 设置缓存所有内容
进入 Cloudflare 后台,选择对应域名,点击左侧缓存中的 Cache Rules:
注意:若你的网站主题在不同设备有不同显示效果,请启用缓存密钥中的“缓存欺骗盔甲”和“按设备类型缓存”。
完成设置后,保存即可。
2. 设置绕过缓存动态资源
再次创建缓存规则,输入自定义规则名称,点击编辑表达式,输入以下内容(将 example.com
替换为你的域名):
(http.request.uri.path contains "/admin" and http.host contains "example.com")
or (http.request.full_uri contains "comment" and http.host contains "example.com")
or (http.request.uri.path contains "/comment" and http.host contains "example.com")
or (http.host contains "example.com" and http.request.uri.path contains "/search")
or (http.host contains "example.com" and ends_with(http.request.full_uri, "html"))
or (http.host contains "example.com" and ends_with(http.request.full_uri, "/"))
缓存规则选择绕过缓存,保存即可。
三、其他优化建议
建议在动态区域结合 WAF 防火墙策略,以抵御 CC 攻击或其他安全威胁。如有需求,请留言交流。
注:本站首页访问较慢是因为使用了大量未缓存的动态图片加载接口,属于正常现象。
如有疑问,欢迎留言讨论!
MingTone 作者
其实咱不是很建议在缓存那设置全部缓存的…文章这么写是因为我图省事,不过目前没有发现啥问题,担心的可以自己调~