我读到了关于 no-cache 和 must-revalidate .
no-cache
must-revalidate
这 answer 说:
如果服务器没有响应重新验证,则必须使用重新验证 请求时,浏览器/代理应该返回504错误。具有 没有缓存,它只显示缓存的内容
然而,“只显示缓存的内容”而不重新验证与中的内容相矛盾 https://datatracker.ietf.org/doc/html/rfc7234#section-5.2.1.4 :
“无缓存”请求指令指示缓存不得使用 存储响应以满足请求 没有成功验证 在原始服务器上。
如果这是真的 没有缓存 不允许在没有重新验证的情况下使用缓存响应,那么这有什么意义 必须重新验证 ?
没有缓存
必须重新验证
缓存 may serve stale responses :
“过时”响应是指具有明确到期信息的响应 或者允许计算启发式到期时间,但不是新的 根据第4.2节中的计算。
除非
如果缓存被禁止,则不得生成过时的响应 显式协议指令(例如,通过“无存储”或“无缓存” 缓存指令、“必须重新验证”缓存响应指令或 适用的“s-maxage”或“proxy-revalidate”缓存响应指令; 参见第5.2.2节)。
特别注意,在本要求中 no-store 和 no-cache 是 隐藏物 指令,以及 must-revalidate 是缓存- 回答 指令。
no-store
所以 必须重新验证 是由源服务器指示响应在过时时可能不会被重用,而不是由客户端指示他们不会接受过时的响应。