概述RFC 5861 定义了 `stale-while-revalidate` 与 `stale-if-error` 两个扩展,用于在响应过期或源站错误时允许缓存短暂提供陈旧副本,提升可用性同时在后台刷新或回退至错误透传。指令说明`stale-while-revalidate=<秒>`:资源过期后可在后台重新验证期间返回陈旧副本,缓存不应阻塞刷新[参考1,2,3,4]。`stale-if-error=<秒>`:当源站返回错误(如 500)时,在给定窗口内允许返回陈旧副本而非错误[参考2]。指令可用于响应或请求侧;响应侧应用于适配所有针对该缓存副本的请求,请求侧仅作用于当前请求[参考1,2]。实践建议适用于内容型页面与可容忍短暂陈旧的接口;与 `ETag/Last-Modified` 配合实现高效重验证。设置合理的窗口时间,避免长期陈旧;监控回退频率与源站错误比例,优化回源与扩容策略。参考与验证[参考1]RFC 5861:陈旧内容的 Cache-Control 扩展规范:https://datatracker.ietf.org/doc/html/rfc5861[参考2]RFC 5861 官方页面(说明与示例):https://www.rfc-editor.org/rfc/rfc5861[参考3]HTTPWG:RFC 5861 概览:https://httpwg.org/specs/rfc5861.html[参考4]MDN:`Cache-Control` 引用 RFC 5861 与 `immutable` 说明:https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control关键词校验关键词聚焦 RFC 5861 扩展与容错缓存,与正文一致。

发表评论 取消回复