Firefox 5“缓存” 301重定向


92

有什么方法可以禁用此“功能”吗?

例如,如果发出的请求是http://localhost/foo.html我已将根地址指定为“ 301”,则所有随后的请求将foo.html完全绕过Web服务器,而ffox 5将检查其缓存,并读取该URL先前为“ 301”,然后重定向甚至不检查更改。

如果我foo.html从301 开始停止运行,则必须清除Firefox的缓存才能“修复”此问题。

Chrome,IE和Firefox的早期版本不执行此操作。


即使删除缓存也无法为我解决此错误(Firefox 17.0.1,Linux)。
KonradHöffner'12

2
@kirdie在“清除最近的历史记录”对话框中,确保将时间范围设置为“所有”,然后选中“缓存”复选框。如果选择的时间范围比您访问重定向的URL的时间范围最近,则不会清除缓存条目。
开尔文

13
@kirdie和有相同问题的每个人:使用Ctrl + H查看历史记录。然后右键单击该站点,然后选择“删除该站点的所有历史记录”(或类似内容)。对我来说就做到了。
LarsNyström2013年

4
@LarsNyström:开发一个Web应用程序并遇到了这个问题-您的建议对我来说是完美的。FF20.0中是“忘记此站点”
cincodenada 2013年

1
301是否不是“ 永久移动”,如果我有一个仅提供https服务的服务器,而人们使用http来访问我的域名(由于情况不妙,因为他们会显示请求uri),我希望浏览器记住是永久,不检查HTTP每次。

Answers:


45

301只是普通的可缓存响应代码。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2说:

This response is cacheable unless indicated otherwise. 

因此,如果您不希望对其进行高速缓存,则服务器需要通过用于控制高速缓存行为的普通标头进行其他指示。

您也可以手动清除缓存


7
我相信使用302(默认情况下不可缓存)会更直接。
弗兰克·法默

22
@Boris Zbarsky:问题不是更多的“如何清除缓存”,而不是“如何首先避免发生缓存写”?
鲍比·杰克

4
对我来说,问题肯定像是“如何避免清除缓存”?
Boris Zbarsky 2012年

17
之所以糟透了,是因为即使您知道它是错误的,也无法“转移-重新加载”重定向。可以分别重新加载所有其他错误的高速缓存资源,但不能重新加载这些该死的重定向。
山姆·沃特金斯

1
我尝试使用来自IIS的302重定向,但是从它们的行为来看,最新版本的Firefox(以及Chrome,Edge和IE)也缓存了这些重定向。我发现打开并杀死“私有”窗口是测试网站并避免中毒浏览器缓存的最佳方法。
dsmtoday

116

在Firefox中,如果您具有“ Web开发人员”工具栏插件。您可以每次单击禁用->禁用缓存->检查页面的新版本。然后重新加载URL,它将刷新您的缓存。因此,您无需清除完整的缓存。

根据cptstubing06的注释,以下内容可以帮助清除缓存:

  1. 键入Ctrl+l以将光标放在位置栏上。
  2. 键入about:config以打开配置设置
  3. 确认所有警告。
  4. 键入,browser.cache然后按Enter以过滤设置。
  5. 双击browser.cache.check_doc_frequency
  6. 将值从更改31
  7. 点击OK
  8. 重新访问强迫性缓存的301页面。
  9. 完成后将频率重置为3。

Firefox现在应该重定向到新的301页面,不再从缓存中获取重定向的页面。


4
这对我来说是一个很好的解决方案-我希望在99%的时间内缓存301,但是一旦变成蓝色,我可能需要更改重定向的位置,并且不想清除整个缓存。为了澄清起见,Firefox Web Developer在工具下带有其自己的菜单,而不是附加组件。该插件也被称为Web Developer,但会显示在“工具”菜单中Web Developer Extension,可以在此处下载:addons.mozilla.org/en-us/firefox/addon/web-developer
cptstubing06 2013年

5
请注意-如果您希望firefox 为重定向的URL 更新其缓存,则可以使用Web Developer Extension临时控制firefox的更改行为,以始终检查是否有新版本,然后将其重新设置为正常设置。这在Web Develoepr Extension-> Disable-> Disable Cache->每次检查页面的新版本->每次检查页面的新版本下。
cptstubing06 2013年

1
无论选择哪种方法,过程都是将此设置更改为始终检查新版本,然后加载具有缓存的重定向的URL。然后它将到达服务器并获取该URL所存在的任何新响应,并使用新响应更新其缓存。然后,您可以将缓存检查频率重新设置为原始值(默认值为“当页面已过期时”,但是我将使用“每次会话一次”,以便现在无需我的参与即可处理这种确切的情况)。
cptstubing13年

@ cptstubing06感谢您的提示!希望您已经提交了它作为解决方案,所以当您不想清除整个缓存时,我可以投票认为这是处理此问题的最佳方法。
Mercurybullet

仅供参考,您可能必须禁用DNS over HTTPS此功能才能按预期工作。
user2741287

25

我刚刚遇到了这个问题,对我来说是两个问题。

该特定域名是通过Cloudflare路由的,因此我不得不将其设置为开发模式。我认为Cloudflare正在缓存301重定向,因此它不必将请求发送到服务器。此步骤可能显然不适用于您。

然后,只需转到“工具”->“选项”,单击右上角的“高级”按钮,选择“网络”选项卡,然后单击“缓存的Web内容”部分下的“立即清除”,即可清除Firefox缓存(版本11)。请注意,我的缓存已设置为0,但是我仍然需要单击“立即清除”按钮以使重定向停止缓存。

我想知道是否有人可以对此进行验证。


2
+1。您关于清除Firefox缓存的说明确实为我(作为用户/客户端,而不是网站所有者)为某个特定的URL修复了此问题,而Firefox无法获取已更新的301。谢谢。
乔恩·施耐德

1
您可以使用以下Firefox插件删除仅缓存的重定向:addons.mozilla.org/en-us/firefox/addon/cacheviewer-continued
Steve

9

在将过时的重定向缓存了一个多月并重新启动之后,我已经找到了适用于Firefox 26的解决方案。

  1. 在“历史记录”菜单上,选择“显示所有历史记录”。
  2. 在搜索中,键入具有缓存的重定向问题的域以显示结果列表。
  3. 右键单击其中一个,然后选择“忘记此站点”。

仅该站点的所有缓存页面,图像和重定向将从缓存中删除。这使您可以清除开发网站的重定向,而无需清除其余的缓存。

附带说明一下,我认为Firefox最多最多只能缓存几天的重定向。将它们缓存一个月以上可以使一个简单的错误成为一个大问题。


2
这可行,但是请注意,“忘记此站点”还将忘记URL历史记录(用于自动完成),甚至会忘记整个域的密码。可能不是您想要的。
tanius


5

Firefox的最新版本中内置的开发人员工具为此提供了解决方案。首先,在开发窗格打开时关闭缓存:

  • 在任何页面上,单击F12以调出开发人员工具
  • 在最右侧,点击齿轮图标“工具箱选项”
  • Advanced Settings检查选项下Disable Cache (when toolbox is open)

现在,只要您想强制刷新缓存的页面,就可以在F12开发工具箱打开的情况下加载/刷新页面。Firefox将绕过缓存并从服务器获取新数据。

我更喜欢这种方法,因为它不会更改浏览器在“常规”非调试浏览中的行为,并且您不必冒险忘记将全局设置恢复为其原始值。

在Firefox 39中验证


1
它无助于缓存的重定向。
SuperDuck


2

在Firefox 38.0版中

Menu -> Edit -> Preferences -> Advanced -> Network -> Clear Now

为我工作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.