摘要

  • HTTP 新鲜度规定缓存能否复用响应,不代表当前授权决定。
  • 敏感内容交付需要把缓存状态与当前仍有效的披露授权绑定起来。

设想源站在用户权益变化后撤下敏感内容,共享缓存却在新鲜期结束前反复返回旧副本,并把每次命中记作源站当前批准。缓存可能完全遵守元数据,审计结论仍然错误。

RFC 9111以年龄、有效期和请求条件定义复用。对带有认证信息的请求,只有响应指令明确许可时才能存储;这种许可约束缓存行为,并不会重新裁定当前用户的权限。条件请求与 304 Not Modified 可以更新已存响应的元数据,但字节未变不等于获准接收者未变。不安全方法触发的失效具有特定范围,不能保证每个中间层都观察到应用其他位置发生的权益变化。RFC 5861区分两种例外:stale-while-revalidate 允许后台再验证期间暂时返回过期副本,stale-if-error 则在无法取得可用响应时允许这样做。

所需证据是缓存交付决策记录:缓存键与分区、存储时间、计算年龄与有效期、相关请求和授权上下文、响应指令、验证器与再验证结果、采用的过期内容例外、源站策略版本、交付时间及作出返回决定的组件。