【问题标题】:Does no-cache allow a stale cached response to be returned?no-cache 是否允许返回陈旧的缓存响应?
【发布时间】:2021-11-07 15:14:44
【问题描述】:

我正在阅读关于 no-cachemust-revalidate 的相互矛盾的陈述。

这个answer 说:

如果服务器不响应重新验证,则使用 must-revalidate 请求,浏览器/代理应该返回 504 错误。和 no-cache,它只会显示缓存的内容

但是“只显示缓存的内容”而不进行重新验证与 https://datatracker.ietf.org/doc/html/rfc7234#section-5.2.1.4 中的内容相矛盾:

“no-cache”请求指令表明缓存不能使用 存储响应以满足请求 没有成功验证 在源服务器上。

如果no-cache 确实不允许使用未经重新验证的缓存响应,那么must-revalidate 的意义何在?

【问题讨论】:

    标签: http caching browser-cache cache-control no-cache


    【解决方案1】:

    一个缓存may serve stale responses:

    “陈旧”响应是具有明确过期信息的响应 或允许计算启发式到期,但不是新鲜的 根据4.2节的计算。

    除非:

    如果缓存被禁止,则不得生成陈旧的响应 显式的协议内指令(例如,通过“无存储”或“无缓存” 缓存指令,“必须重新验证”缓存响应指令,或 适用的“s-maxage”或“proxy-revalidate”缓存响应指令; 见第 5.2.2 节)。

    请特别注意,在此要求中,no-storeno-cachecache 指令,must-revalidate 是高速缓存-响应 指令。

    因此,must-revalidate 是供源服务器指示在响应过时时可能不会被重用的方式,而不是让客户端指示他们不会接受过时响应的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多