为了账号安全,请及时绑定邮箱和手机立即绑定

浏览器缓存HTTP 301 s多长时间?

浏览器缓存HTTP 301 s多长时间?

陪伴而非守候 2019-07-15 09:51:44
浏览器缓存HTTP 301 s多长时间?我正在调试HTTP 301永久重定向的问题。经过快速测试,Safari在重新启动时似乎清除了301 s的缓存,但Firefox没有。IE,Chrome,Firefox和Safari什么时候清除301的缓存?更新:例如,如果我想重定向example1.com到example2.com,但我意外地将它设置为重定向到example3.com,这是个问题。我可以纠正这个错误,但是任何访问过的人example1.com同时,将错误的重定向缓存到example3.com,所以他们也无法到达example1.com或example2.com直到他们的缓存被清除。经过调查,我发现Cache-Control和Expires标头设置。不正确的301响应的标题应该如下所示:HTTP/1.1 301 Moved Permanently Date: Wed, 27 Feb 2013 12:05:53 GMT Server: Apache/2.2.21 (Unix) DAV/2 PHP/5.3.8 X-Powered-By: PHP/5.3.8 Location: http://example3.com/ Content-Type: text/html我自己的测试显示:IE7,IE8,Android2.3.4根本不缓存。Firefox 18.0.2、Safari 5.1.7(Windows 7)和Opera 12.14全部缓存,并在浏览器重新启动时清除缓存。IE 10和Chrome 25缓存,但不清楚浏览器重新启动,那么他们什么时候才能放行呢?
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

至少有两个浏览器-Chrome和Firefox-将缓存301重定向无到期日.

也就是说,只要浏览器的缓存能够容纳它,它就会保持缓存状态。如果手动清除缓存,或者清除缓存条目以便为新条目腾出空间,则将从缓存中删除。

您可以至少在Firefox中验证这一点,方法是about:cache在磁盘缓存下找到它。

我不知道其他浏览器的行为,比如IE10/IE11。但是,考虑到其他浏览器会无限期地缓存它,无论如何您都必须适应这种情况。

在包括Chrome/Firefox在内的所有浏览器中,仍然可以使用标头覆盖此默认行为,如下所述:

注意:这个答案是在2014年写的,浏览器的行为可能会随着时间的推移而改变。

如果您不希望重定向被缓存

这种不确定的缓存只是违约在没有缓存控制头的情况下,这些浏览器进行缓存。逻辑是,您指定了一个“永久”重定向,而没有给他们任何其他缓存指令,所以他们会把它当作您想要无限期缓存的东西。

如果指定的话,浏览器仍然会遵守缓存控制,并与任何其他响应一样过期报头。

可以添加标题,例如Cache-Control: max-age=3600Expires: Thu, 01 Dec 2014 16:00:00 GMT你的301重定向。你甚至可以加上Cache-Control: no-cache所以它不会被浏览器永久缓存,或者Cache-Control: no-store因此,浏览器甚至不能将其存储在临时存储中。

然而,在我看来,另一个更好的选择是使用302或307重定向。这并不意味着浏览器或缓存它们是“永久的”重定向,因此不应该缓存在缓存控制头的意思。

在我看来,似乎发出301重定向,但将其标记为不可缓存将与精神301重定向是为了什么,尽管它在技术上可能是有效的。YMMV,你可能会发现边缘的情况,这是有意义的“永久”重定向有一个时间限制。

如果您以前发布了301重定向,但希望取消此操作。

如果用户的浏览器中仍然有缓存的301重定向,那么不管源页面是否仍然存在重定向,他们都将继续被带到目标页面。解决此问题的选项包括:

  • 最简单和最好的解决方案是再次发布301重定向。

    浏览器将意识到它正被引导回它以前认为是一个受委托的URL,这应该会导致它重新获取那个URL,以确认旧的重定向不再存在。

    编辑:一些评论对此表示怀疑,见下文。

  • 如果您无法控制以前的重定向目标所在的站点,那么您就不走运了。试着请求网站所有者重定向回你。

此外,预防胜于治疗-避免301重定向,如果你不确定你想永久取消旧的网址。


查看完整回答
反对 回复 2019-07-15
?
呼唤远方

TA贡献1856条经验 获得超11个赞

若要清除永久重定向,请转到chrom:/net-inals。在顶部红色状态栏的右侧,单击向下箭头打开下拉菜单,并在“工具”组下选择“清除缓存”。

在第48版中,这是我清除缓存301的唯一有效方法。

更新:不幸的是,截至第71版(2018年12月),谷歌已经删除了网络内部功能。


查看完整回答
反对 回复 2019-07-15
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

一个帮助那些迫切想摆脱重定向缓存的人的答案:

Chrome无限地缓存301重定向(在本地磁盘缓存中)。若要清除此缓存,请执行以下操作:

  • 打开你的

    德沃尔斯

    (新闻)

    F12)

  • 网络

    选项卡检查

    “禁用缓存”

    复选框
  • 保持DevTools打开

    再装

    页面(按下)

    F5)

当一切正常时,您可以取消“禁用缓存”,一切都将继续正常工作。


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 1360 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信