cf-cache-status共有几种状态分别会在什么情况下产生

 

参考文献 cloudflare的 cache状态

https://developers.cloudflare.com/cache/concepts/cache-responses/

 

Cloudflare 的Cf-Cache-Status包含10 种常见状态,每种状态对应不同的缓存处理场景,具体如下(按使用频率排序):

1. HIT(命中缓存)

  • 产生场景:请求的资源已存在于 Cloudflare 边缘节点的缓存中,且未过期,直接从缓存返回响应。
  • 示例:静态资源(如图片、CSS)第二次请求时,CDN 节点已缓存该资源,无需回源。

2. MISS(未命中缓存)

  • 产生场景:请求的资源不在 Cloudflare 缓存中,需回源站获取资源,同时将资源缓存到边缘节点(后续请求可能命中)。
  • 示例:首次请求某静态资源,或缓存已被清除 / 过期后首次请求。

3. DYNAMIC(动态未缓存)

  • 产生场景:Cloudflare 判定该资源为动态内容(如带敏感参数的 GET 请求、POST 请求),默认不缓存,直接回源站处理。
  • 示例:用户个人信息接口(含user_id参数)、登录请求,或未配置缓存规则的动态页面。

4. BYPASS(绕过缓存)

  • 产生场景:资源本可缓存,但被以下规则强制绕过:
    • 源站响应头包含Cache-Control: no-cache/private/max-age=0
    • 响应头包含 Cookie(默认认为是个性化内容);
    • 请求包含Authorization鉴权头;
    • 缓存规则中配置了 “Bypass” 策略。
  • 示例:登录后的后台页面(携带用户 Cookie)、源站要求不缓存的资源。

5. EXPIRED(缓存已过期)

  • 产生场景:缓存中存在该资源,但已超过max-ageExpires设置的过期时间,需回源站获取最新资源并更新缓存。
  • 示例:静态资源缓存时间(如 1 小时)已到,再次请求时回源更新。

6. STALE(过期但回源失败)

  • 产生场景:缓存资源已过期,但源站不可用(如宕机、网络故障),Cloudflare 临时返回过期的缓存资源(保障服务可用性)。
  • 示例:源站服务器崩溃时,CDN 节点返回已过期的静态页面。

7. REVALIDATED(缓存重新验证)

  • 产生场景:缓存资源已过期,Cloudflare 通过If-Modified-Since/If-None-Match头向源站验证资源是否更新:
    • 若源站返回304 Not Modified,则更新缓存过期时间并返回旧缓存;
    • 若源站返回新资源,则更新缓存并返回新内容。
  • 示例:静态资源过期后,CDN 向源站验证资源是否有变化,避免无意义的资源传输。

8. UPDATING(缓存更新中)

  • 产生场景:缓存资源已过期,但源站正在处理更新请求(仅在高并发场景下触发,避免大量请求同时回源)。此时先返回过期缓存,同时后台更新缓存。
  • 示例:热门资源(如热点新闻图片)缓存过期后,大量请求同时到达,CDN 仅用一个请求回源,其余请求先返回旧缓存。

9. NONE/UNKNOWN(无缓存状态)

  • 产生场景:请求未到达缓存层,直接由 Cloudflare 处理:
    • Worker 直接生成响应(未触发缓存);
    • WAF 拦截了恶意请求(请求被阻断,未到缓存);
    • 重定向规则(如 HTTP 跳转 HTTPS)触发的响应。
  • 示例:请求被 WAF 判定为攻击,直接返回 403 错误,无缓存处理。

10. TIERED_HIT(分层缓存命中)

  • 产生场景:启用 Cloudflare “分层缓存” 功能后,边缘节点未缓存资源,但上层区域节点(如区域中心节点)已缓存,从区域节点获取资源(减少跨区域回源)。
  • 示例:小流量边缘节点未缓存资源,但区域中心节点已缓存,直接从区域节点获取。

总结

这些状态覆盖了 CDN 从 “缓存命中” 到 “回源处理” 的全流程,可通过Cf-Cache-Status快速定位资源的缓存处理逻辑,优化 CDN 配置(如减少 MISS、DYNAMIC 占比)。
posted @ 2025-12-02 10:28  陈晓猛  阅读(24)  评论(0)    收藏  举报