Cloudflare 缓存规则实战:免费版也能跑出付费感
Cloudflare 免费版不只是套个 CDN 挡攻击:缓存规则配好了,静态资源命中率 90%+,源站压力大减,小 VPS 也能扛大流量。小够手把手配 Cache Rules:哪些该缓存、哪些千万别缓存、登录态怎么绕过。
我是小够,只推够用的 VPS。
很多人把 Cloudflare 免费版当"套个壳防攻击",其实它的缓存能力被严重低估了。缓存规则配好,静态资源命中率能到 90% 以上——访客基本不碰你的源站,1 核 2G 的小 VPS 也能扛住日常流量。今天讲 Cache Rules 实战,每一步都能直接照抄。
先理解:Cloudflare 默认缓存什么
默认情况下,Cloudflare 只缓存"确定静态"的文件类型(css、js、图片、字体等),HTML 页面默认是不缓存的——因为它怕你把动态内容缓存错,把 A 用户的页面给 B 用户看。所以第一步,是亲手告诉它:哪些可以放心缓存,哪些碰都别碰。
实战一:静态资源强缓存
在 Cloudflare 后台 → 缓存 → Cache Rules,新建规则:
- 匹配条件:URI 路径,通配符匹配
\*.(css|js|png|jpg|jpeg|webp|gif|svg|woff|woff2|ico) - 动作:缓存资格 = 符合条件时缓存;边缘 TTL = 1 个月;浏览器 TTL = 7 天
文件名带版本号/哈希的静态资源(如 app.a3f9c2.js),TTL 可以设更长——文件变了文件名就变了,不存在"缓存过期显示旧版"的问题。WordPress 的缓存插件一般会自动给静态资源加版本号,放心设长 TTL。
小够提醒:TTL 别设成"一年"这种极端值。万一哪天你要紧急换一张图、修一个 js bug,超长 TTL 会让你等到天荒地老。一个月的边缘 TTL 是甜点值。
实战二:HTML 页面谨慎缓存
首页、文章页这类"基本静态"的 HTML,可以缓存,但 TTL 设短一点(如 1-2 小时),更新文章后去 Cloudflare 后台"清除缓存"即可。以下这些,打死也别缓存:
/wp-admin/*—— 后台,缓存了你就进不去了/wp-login.php—— 登录页- 购物车、结算、会员中心、用户订单页 —— 动态+隐私,缓存了是灾难
- 带
?s=搜索参数的页面 —— 每个人的搜索结果不一样 - API 接口路径(如
/wp-json/*)—— 动态数据
规则里用"URI 路径"把这些排除掉,顺序上把"不缓存"规则放前面——Cloudflare 按顺序匹配,先匹配先执行,“绕过缓存"的规则一定要排在"缓存"规则之前。
实战三:登录态绕过缓存
登录用户和普通访客看到的页面可能不一样(比如右上角显示用户名)。Cache Rules 里可以设"当特定 Cookie 存在时绕过缓存”——比如检测到 wordpress_logged_in_* Cookie,就直接回源,不走缓存。
这样管理员看后台、会员看个人中心,永远是最新的;普通访客享受缓存加速。两边都不耽误,这才是正确的姿势。
实战四:查询字符串的处理
有些 URL 带 ?v=123 这类版本号参数,默认 Cloudflare 会把带参数和不带参数当成不同缓存——其实内容一样。可以在规则里设"忽略查询字符串"(对静态资源),提高命中率。但别对动态页面这么干,?page=2 和 ?page=3 内容完全不一样,忽略了就串了。
验证:缓存到底命没命中
打开浏览器开发者工具(F12)→ 网络 → 刷新页面,看响应头:
cf-cache-status: HIT—— 命中缓存,好,访客没碰你的源站MISS—— 回源了,第一次访问正常,刷新一次应该变 HITDYNAMIC—— 没走缓存,回去检查规则是不是没匹配上BYPASS—— 被规则绕过了,确认是不是你主动要绕过的路径
调规则就盯着这个字段看,改一条规则、清一次缓存、刷新验证——三步循环,直到关键资源全是 HIT。
实战五:容易翻车的三个现场
现场一:更新了文章,前台还是旧的。排查顺序:先清 Cloudflare 缓存(缓存→清除缓存→清除所有内容),再清 WordPress 缓存插件,最后清浏览器缓存。90% 的"更新不生效"都是缓存问题,按这个顺序查,5 分钟解决。
现场二:后台登录不上,一直跳转。八成是把 /wp-admin 也缓存了,或者"绕过缓存"规则没配好。去 Cache Rules 里检查:登录相关路径有没有在"绕过"规则里,规则顺序对不对。
现场三:手机和电脑看到的不一样。有些主题会根据设备输出不同 HTML,但缓存没区分设备——手机用户看到了桌面版缓存。解决办法:缓存规则里按 User-Agent 区分,或者干脆对这类页面不缓存。响应式主题一般没这个问题,用独立手机版主题的站要注意。
开发模式:改规则时的救命开关
Cloudflare 有个"开发模式"(缓存→开发模式),开了之后 3 小时内所有请求直接回源、不走缓存。调规则、改版网站时先开它,改完确认没问题再关。别在开发模式开着的时候以为"缓存配好了"——它开着的时候你看到的都是源站,关了才是真实效果。
缓存和 SEO 的关系
有人担心:缓存会不会影响搜索引擎收录?答案是正确配置的缓存对 SEO 只有好处:
- 搜索引擎把"页面加载速度"作为排名因素之一,缓存让速度起飞,排名受益。
- 缓存的是"内容",不是"欺骗"——给搜索引擎看的和给用户看的是一样的,不存在 cloaking 问题。
- 注意:别把 404 页面也缓存了。删掉的文章返回 404,如果被缓存,搜索引擎会以为这个页面"一直 404",影响收录判断。规则里把 4xx/5xx 状态码排除出缓存。
免费版的上限在哪
诚实地说,免费版 Cache Rules 也有天花板:规则数量有限(免费版几条,省着用)、没有 Polish(图片优化)、没有 Argo(智能路由)。流量真的大到免费版扛不住时,先优化源站(缓存、图片、数据库),而不是先掏钱升级——小够见过太多"花钱升级 CDN,结果瓶颈在源站数据库"的案例,钱花了,慢还在。
规则模板:小博客一套照抄
理论讲完了,给一套小博客(WordPress)直接照抄的规则组合,按顺序建三条:
规则 1:绕过动态路径(优先级最高)
- 匹配:URI 路径 包含
/wp-admin/或/wp-login.php或/wp-json/或/cart/或/checkout/ - 动作:绕过缓存
规则 2:登录用户绕过
- 匹配:Cookie 包含
wordpress_logged_in_ - 动作:绕过缓存
规则 3:静态资源强缓存
- 匹配:URI 路径 通配
\*.(css|js|png|jpg|jpeg|webp|gif|svg|woff|woff2|ico) - 动作:缓存,边缘 TTL 1 个月,浏览器 TTL 7 天
三条建完,首页文章页走缓存,后台登录结算全绕过,静态资源长期缓存。这就是 90% 小博客的最优解,剩下的 10% 是特殊需求,再单独调。
最后提醒:每次改完规则,去"缓存"里清一次所有缓存,再用隐身窗口验证。规则配错了不可怕,可怕的是配错了还不知道——验证是配置的一部分,不是可选项。
什么时候该上付费版
免费版 Cache Rules 配到极致,遇到这三种情况可以考虑付费:规则数量不够用了(业务复杂、路径多)、需要 Polish 图片优化(图片站、电商站)、需要 Argo 智能路由(访客全球分布)。判断标准:免费版的瓶颈是不是卡在"钱能解决"的地方。如果瓶颈在源站性能、数据库,那是花多少钱买 CDN 都解决不了的——先修源站。
缓存预热:新站上线前先跑一遍
新站上线、或大改版后,别等访客来"踩坑":用预缓存功能把重要页面先跑一遍,搜索引擎爬虫第一次来就吃到热缓存——第一印象很重要,对爬虫也一样。W3 Total Cache 和 WP Rocket 都有预缓存/预加载,设置里打开,填上 sitemap 地址,让它自己爬。
小够总结
Cloudflare 免费版缓存四原则:静态资源往死里缓存、动态页面一个别碰、登录态绕过缓存、改完规则看 cf-cache-status 验证。配好后源站带宽压力大减,1 核 2G 的小 VPS 扛住日常流量毫无压力。记住:缓存是"加速器"不是"保险箱"——该备份备份,该加固加固,别把安全指望在缓存上。