You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTTP Cache-Control must-understand指令:适用场景与状态码咨询

Cache-Control: must-understand 指令详解:适用场景与状态码说明

一、适用场景

must-understand是HTTP响应头Cache-Control中的指令,核心作用是限制缓存仅在能理解当前响应状态码对应的缓存规则时,才存储该响应。结合no-store使用时,能实现安全的回退逻辑:不支持该指令的缓存会执行no-store不存储响应,支持的缓存则在确认理解状态码缓存要求后再存储。它的典型适用场景包括:

  • 新型标准状态码的缓存安全:当服务器使用HTTP规范新增的状态码时,旧版缓存系统可能未实现这些状态码的缓存规则。比如HTTP/2新增的421 Misdirected Request,使用must-understand可以避免旧缓存错误缓存不符合预期的响应,确保只有能正确解读新状态码缓存逻辑的缓存才会存储内容。
  • 自定义状态码的缓存控制:如果服务器定义了非标准的自定义状态码(如业务专属的错误状态码),且附带了特定的缓存规则,must-understand能防止不理解这些自定义状态码缓存要求的缓存随意存储响应,保证缓存行为严格符合服务器的预期。
  • 高合规性要求的缓存场景:对于对缓存正确性要求极高的业务(如金融、医疗数据服务),不允许任何缓存系统因状态码理解偏差导致错误缓存。此时结合no-store使用must-understand(示例:Cache-Control: must-understand, no-store),既能让兼容缓存按规则存储,又能让不兼容缓存直接放弃存储,避免风险。

二、缓存可能理解或不理解的状态码

1. 缓存可能不理解的状态码

这类状态码通常是新增的标准状态码或自定义状态码:

  • 新增标准状态码:比如421 Misdirected Request、451 Unavailable For Legal Reasons,这些状态码在较新的HTTP规范中定义,旧版缓存系统可能未适配其缓存规则。
  • 自定义状态码:如部分服务使用的599 Network Connect Timeout Error这类非标准状态码,第三方缓存或老旧缓存通常不会理解其对应的缓存逻辑。

2. 缓存普遍理解的状态码

绝大多数缓存系统都能正确理解HTTP基础规范中定义的常见状态码:

  • 成功状态码:200 OK、206 Partial Content
  • 重定向状态码:301 Moved Permanently、302 Found
  • 客户端错误状态码:404 Not Found、403 Forbidden
  • 服务器错误状态码:500 Internal Server Error

这些状态码的缓存规则在HTTP早期规范中就已明确,几乎所有缓存实现都能正确处理。


内容的提问来源于stack exchange,提问作者Daniel Schilling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:13:20