参考文献 cloudflare的 cache状态
https://developers.cloudflare.com/cache/concepts/cache-responses/
Cloudflare 的Cf-Cache-Status包含10 种常见状态,每种状态对应不同的缓存处理场景,具体如下(按使用频率排序):
- 产生场景:请求的资源已存在于 Cloudflare 边缘节点的缓存中,且未过期,直接从缓存返回响应。
- 示例:静态资源(如图片、CSS)第二次请求时,CDN 节点已缓存该资源,无需回源。
- 产生场景:请求的资源不在 Cloudflare 缓存中,需回源站获取资源,同时将资源缓存到边缘节点(后续请求可能命中)。
- 示例:首次请求某静态资源,或缓存已被清除 / 过期后首次请求。
- 产生场景:Cloudflare 判定该资源为动态内容(如带敏感参数的 GET 请求、POST 请求),默认不缓存,直接回源站处理。
- 示例:用户个人信息接口(含
user_id参数)、登录请求,或未配置缓存规则的动态页面。
- 产生场景:资源本可缓存,但被以下规则强制绕过:
- 源站响应头包含
Cache-Control: no-cache/private/max-age=0;
- 响应头包含 Cookie(默认认为是个性化内容);
- 请求包含
Authorization鉴权头;
- 缓存规则中配置了 “Bypass” 策略。
- 示例:登录后的后台页面(携带用户 Cookie)、源站要求不缓存的资源。
- 产生场景:缓存中存在该资源,但已超过
max-age或Expires设置的过期时间,需回源站获取最新资源并更新缓存。
- 示例:静态资源缓存时间(如 1 小时)已到,再次请求时回源更新。
- 产生场景:缓存资源已过期,但源站不可用(如宕机、网络故障),Cloudflare 临时返回过期的缓存资源(保障服务可用性)。
- 示例:源站服务器崩溃时,CDN 节点返回已过期的静态页面。
- 产生场景:缓存资源已过期,Cloudflare 通过
If-Modified-Since/If-None-Match头向源站验证资源是否更新:
- 若源站返回
304 Not Modified,则更新缓存过期时间并返回旧缓存;
- 若源站返回新资源,则更新缓存并返回新内容。
- 示例:静态资源过期后,CDN 向源站验证资源是否有变化,避免无意义的资源传输。
- 产生场景:缓存资源已过期,但源站正在处理更新请求(仅在高并发场景下触发,避免大量请求同时回源)。此时先返回过期缓存,同时后台更新缓存。
- 示例:热门资源(如热点新闻图片)缓存过期后,大量请求同时到达,CDN 仅用一个请求回源,其余请求先返回旧缓存。
- 产生场景:请求未到达缓存层,直接由 Cloudflare 处理:
- Worker 直接生成响应(未触发缓存);
- WAF 拦截了恶意请求(请求被阻断,未到缓存);
- 重定向规则(如 HTTP 跳转 HTTPS)触发的响应。
- 示例:请求被 WAF 判定为攻击,直接返回 403 错误,无缓存处理。
- 产生场景:启用 Cloudflare “分层缓存” 功能后,边缘节点未缓存资源,但上层区域节点(如区域中心节点)已缓存,从区域节点获取资源(减少跨区域回源)。
- 示例:小流量边缘节点未缓存资源,但区域中心节点已缓存,直接从区域节点获取。
这些状态覆盖了 CDN 从 “缓存命中” 到 “回源处理” 的全流程,可通过Cf-Cache-Status快速定位资源的缓存处理逻辑,优化 CDN 配置(如减少 MISS、DYNAMIC 占比)。
声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/
如出现转载未声明 将追究法律责任~谢谢合作