← 中文资源

简体中文版本

stale-while-revalidate

stale-while-revalidate 立即服务陈旧缓存项并在后台刷新,使用户见即时响应且下次请求获新数据而无踩踏。

阅读英文原文

概念定义

stale-while-revalidate:缓存是正确性有风险的优化:用陈旧与一致性复杂度换速度,每次命中都是缓存值仍有效的赌注。

工作机制

缓存键必须编码影响结果的每个输入——漏一维就给错答案。失效是难题:TTL 是安全网而非策略,因为它限界陈旧但不保证新鲜。写穿保持缓存与存储一致;写后以耐久性为代价改善写延迟。驱逐策略决定压力下哪次未命中变缓存未命中。

使用场景

当同一读占主导且重算昂贵时应用。误区是不测量就缓存——99% 命中率但在未命中路径加延迟的缓存可能是净损失。另一是缓存踩踏:热门键过期时每个并发请求重算同一值,惊群后端。single-flight 或 stale-while-revalidate 防止此问题。

延伸说明

补充说明:stale-while-revalidate要求在设计与运维中持续权衡效率、正确性与可维护性,任何单一维度的过度优化都可能引入另一维度的风险。实践上应结合具体场景的约束、团队规模与变更频率,在小步验证中积累证据,而非凭一次假设或单一指标下结论。