代码之家  ›  专栏  ›  技术社区  ›  David Klempfner

没有缓存允许返回过时的缓存响应吗?

  •  0
  • David Klempfner  · 技术社区  · 3 年前

    我读到了关于 no-cache must-revalidate .

    answer 说:

    如果服务器没有响应重新验证,则必须使用重新验证 请求时,浏览器/代理应该返回504错误。具有 没有缓存,它只显示缓存的内容

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

    “无缓存”请求指令指示缓存不得使用 存储响应以满足请求 没有成功验证 在原始服务器上。

    如果这是真的 没有缓存 不允许在没有重新验证的情况下使用缓存响应,那么这有什么意义 必须重新验证 ?

    0 回复  |  直到 3 年前
        1
  •  1
  •   Joe    3 年前

    缓存 may serve stale responses :

    “过时”响应是指具有明确到期信息的响应 或者允许计算启发式到期时间,但不是新的 根据第4.2节中的计算。

    除非

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

    特别注意,在本要求中 no-store no-cache 隐藏物 指令,以及 must-revalidate 是缓存- 回答 指令。

    所以 必须重新验证 是由源服务器指示响应在过时时可能不会被重用,而不是由客户端指示他们不会接受过时的响应。