浏览器中保存302重定向多长时间?

时间:2012-08-31 09:45:43

标签: redirect browser browser-cache http-status-code-302

由于我们的网络服务器配置错误,主域名将302重定向发送到新位置。我们解决了这个问题。当清空浏览器缓存时,一切正常。

对于未清空缓存的“普通”客户端:302重定向在浏览器中保留了多长时间?

我在默认设置下为每个主流浏览器(Chrome,Firefox,Safari,Opera,Edge,IE 12)寻找特定缓存时间(如果有)。

6 个答案:

答案 0 :(得分:27)

除非Web服务器还返回Cache-ControlExpires标头,否则不应该缓存它。根据{{​​3}}

  

请求的资源暂时驻留在不同的URI下。由于重定向有时可能会被更改,因此客户端应该继续使用Request-URI来处理将来的请求。如果由Cache-Control或Expires头字段指示,则此响应仅可缓存。

答案 1 :(得分:12)

Jon Lin引用的标准使用" SHOULD",这是RFC术语中的not as strong as "MUST"。这不仅仅是理论上的干扰;例如,Cloudflare does cache redirects

  

如果没有提供缓存头(没有缓存控制或过期)和   url是可缓存的(.jpg,.css,.js等),然后CloudFlare缓存两者   301和302s。我们缓存301几个小时和302s一个   更短的时间(约20分钟)。

因此,您应该确保可以处理它或使用显式标头(例如Cache-Control: private, no-cache)来指导浏览器和中间人对其进行缓存。

答案 2 :(得分:3)

使用史蒂夫·桑德(Steve Sounder)的Redirect Caching Tests tool(感谢@LeonidVasilev),看来结果可能与预期不符。没有过期的标头或cookie,结果如下:

Chrome 71 :未缓存✔
Firefox 64 :已缓存✕
Safari 12 :已缓存✕

因此,尽管RFC 2616, section 10.3.3 302 Found指出了什么,但并不是所有的浏览器都遵循这些准则或可能被视为预期的行为:(

答案 3 :(得分:1)

添加

Cache-Control: no-store

响应的标题,它不会被缓存。截至2020年7月20日,所有主流浏览器都对此予以尊重。

尽管要注意中间缓存(代理/ CDN):如果中间媒介的最小TTL不为零,则无论您做什么都将缓存您的响应。参见例如:

Managing How Long Content Stays in an Edge Cache (Expiration)

表的最后一行( Origin添加了Cache-Control:对象没有缓存,没有存储和/或私有指令)。在这种情况下,防止缓存的唯一方法是将TTL设置为0(并添加Cache-Control: no-store标头)。

答案 4 :(得分:0)

这取决于个人客户端的浏览器缓存设置:IE可以选择“从不”检查新页面,它对重定向具有相同的效果。
而AFAIR IE的“自动”设置(默认?)并没有好多少。

答案 5 :(得分:0)

Firefox

根据bug 812167

,不应对其进行缓存