---
title: "CDN 缓存容错:stale-while-revalidate 与 stale-if-error"
keywords:
- RFC 5861
- stale-while-revalidate
- stale-if-error
- Cache-Control
- 容错
- 到期
description: "解释 RFC 5861 扩展指令在容错与更新路径中的作用,给出响应与请求侧的适用范围,并结合实际策略建议与权威来源。"
categories:
- 文章资讯
- 编程技术
---
概述
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 扩展与容错缓存,与正文一致。

发表评论 取消回复