kev*_*g29 5 browser cache-control http-caching browser-cache
在调试生产问题时,我们发现对URL的GET请求正在500 Internal Server Error为一个用户返回200 OK,但为其他人返回.看起来500是从缓存中提供的,但是自从重现这个bug以来的任何尝试都没有成功.
我的问题是:是否可以通过浏览器缓存错误响应?如果是这样,哪些浏览器支持它以及我需要复制它的缓存头?
我的直觉是不应缓存错误响应,因为即使修复了错误,您仍将继续被拒绝服务.基于哪些HTTP状态代码可缓存?它看起来似乎500不应该是可缓存的.缓存策略是否跨浏览器一致地实施?
默认情况下, A500 Internal Server Error被指定为不可缓存。有关参考,请参阅RFC 7231 的第 6.1 节和RFC 7231 的第 6.6.1 节 500 内部服务器错误。如果默认情况下 500 是可缓存的,则规范将明确定义这一点。
但是,根据显式缓存标头,此行为可以被覆盖,并且完全可能发生 500 响应被缓存的情况,因为RFC 7234 的第 3 节指出,除了与您的问题相关的其他内容之外,还包括以下内容:
请注意,上面列出的任何要求都可以被缓存控制扩展覆盖;
我的猜测是,在出现 500 错误的情况下,缓存标头已经被搞乱了。
要激发 500 响应的缓存,可以尝试public在Cache-Control响应标头中设置该标志。
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |