如何关闭Firefox上的缓存?


143

在开发过程中,我必须始终在Firefox中“清除缓存”,以使其使用最新版本的JavaScript文件。

是否有某种设置(about:config)可以完全关闭JavaScript文件的缓存?或者,如果不是,对于所有文件?

Answers:


229

在Firefox地址栏中输入“ about:config”,然后设置:

browser.cache.disk.enable = false
browser.cache.memory.enable = false

如果是本地开发,或使用HTML5的新清单属性,则可能还必须在about:config中设置以下内容-

browser.cache.offline.enable = false

我怎么不知道这个小宝石?about:config中的各种好东西!
ABrowne

2
network.http.use-cache不适合我。更改browser.cache.offline.enable对我没有影响。
柯蒂斯

1
我毫不怀疑这是一个很好的答案,但是在最新的firefox版本中,它似乎不再是正确的(目前我使用的是开发人员版本47.0a2)。不过,在Web开发人员设置中禁用缓存对我来说是有效的。
JosephStyons's

61

网页开发工具有一个选项来禁用缓存,这使得它很容易打开它,当你需要它。


1
我过去所做的是CTRL-F5或在单击Reload按钮的同时按住Shift键,但是Web Developer Toolbar的“ Disable Cache”功能是实现此目的的好方法。您不必那样完全禁用firefox的缓存。
乔恩·昂斯托特

1
不过,您应该记住在测试后启用缓存。;)
Neurolabs 2011年

1
@Shanimal,它在14.0.1中对我有效,您可能需要卸载/重新安装。
卢卡斯

@卢卡斯 我正在使用的服务器上的项目正在缓存,但是我忘记删除我的评论了……谢谢。
Shanimal 2012年

1
在chrispederick修复了最新版本中的一些新的Firefox更改之前,这不再起作用。我会选择about:config解决方案,它对开发人员来说更好。
Ligemer 2013年

12

您是否尝试过使用CTRL- F5更新页面?


6
我真的对此感到怀疑,至少在iframe和frameset存在的情况下,这种方法能否可靠地工作。
锡洛

2
正确,它不会总是在iframe中重新加载JS / CSS,但是在Firefox中,您至少可以将该框架弹出到新标签页中并重新加载。
scunliffe

我一直使用Ctrl-F5 .... )
Gromer 2011年

Ctrl-F5不会重置javascript文件的缓存。它的作用(大部分是)是清除您的会话和cookie,而不是清除缓存的javascript和样式表
AceMark 2012年

10

没有特定选项可以仅针对JavaScript禁用缓存,您将必须完全禁用缓存。

FireBug在“网络”选项卡的下拉菜单中可以选择禁用浏览器缓存。


8

在同一页面上,要禁用缓存,请执行以下操作:仅供参考:正在使用的版本为30.0

您可以 :

打开webdeveloper工具栏 开放式网页开发人员

然后选择禁用缓存

之后,它将从自己的页面上重新加载页面(您处于开启状态),并且所有内容都将被重新缓存,并且每次都会请求任何进一步的请求,并且您可以使Web开发人员始终保持开放状态以保持关注并确保其始终处于打开状态(检查) 。


8

Firefox 48开发人员工具

仅在打开工具箱时才允许您关闭缓存,这非常适合Web开发:

  • F12
  • 变速箱在右上角
  • 向下滚动顶部高级设置
  • 选中“禁用缓存(打开工具箱时)”

在此处输入图片说明

https://stackoverflow.com/a/27397425/895245具有相似的内容,但是自那以后位置有所变化。


1
谢谢...那里(和该线程中)有关于将network.http.use-cache设置为false的信息...但是在我的FF(53)版本中,设置不再存在...此技术要优越得多无论如何。
mike啮齿动物,

7

如果您正在使用服务器端代码,则可以生成随机数,并以以下方式将其附加到src的末尾...。

src =“ yourJavascriptFile.js?randomNumber = 434534”

每次都会随机生成randomNumber。


这是唯一对我有用的解决方案,除了每次刷新时手动清除浏览器缓存外。
柯蒂斯

4

我知道我要复活一个古老的问题,但是今天我试图解决这个问题并找到替代解决方案。当我想测试时切换缓存对我来说并不是真正可以接受的,并且正如其他人提到的那样,硬刷新(ctrl + shift + r)并不总是有效。

相反,我选择将以下内容放入开发环境中的vhost.conf文件中(也可以在.htaccess中完成):

<FilesMatch "\.(js|css)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>

在我的开发环境中,这可确保始终检索js和css。此外,它不会影响我的其余浏览,并且也适用于所有浏览器,因此在chrome / ie等环境中进行测试也很容易。

在此处找到该代码段以及其他一些方便的Apache技巧:http : //www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess

为了确保我的客户总是看到生产中的最新版本,我们在每次更新的js包含的查询字符串中增加查询字符串,即

jquery.somefile.js?v=0.5

这会迫使我的客户的浏览器在看到新的查询字符串时更新其本地缓存,但随后缓存新副本,直到再次更新文件


3

最好的策略是设计您的网站,以为您的JS文件构建一个唯一的URL,该URL在每次更改时都会重置。这样,当没有更改时,它将缓存,但是当发生任何更改时,它将立即重新加载。

您需要针对特定​​的环境工具进行调整,但是如果您使用的是PHP / Apache,那么这对您和最终用户都是一个不错的解决方案。

http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/


3

您可以使用CTRL-F5绕过缓存重新加载。

您可以在firefox中设置首选项以不使用缓存

network.http.use-cache = false

您可以将Web服务器设置为发送js文件的no-cache / Expires / Cache-Control标头。

这是apache网络服务器的示例


是shift-f5或ctrl-f5吗?
锡洛

3

如果您使用FireBug,则在“网络”选项卡的下拉菜单上,有一个选项可以禁用浏览器的缓存。

在此处输入图片说明


Firebug已停产。
K7AAY

1

最后两种解决方案各有利弊,但它们都是恕我直言的绝佳解决方案。

  1. 您可能会或可能不希望将会话ID嵌入到您的URL中,以加强安全性。但是在开发中这并不重要,但是如果您忘记将其删除怎么办?这真的有用吗?您是否不需要像序列号生成器(会话中存储的点击计数,或者甚至是1到0,如果0到1)之类的东西?

  2. 添加会话ID(或任何排序器)意味着您需要记住将其添加到不需要缓存的每个资源中。一方面,这更好,因为您可以仅将会话ID包含在您正在积极开发和测试的资源中。另一方面,这意味着您必须这样做,并且必须记住将其删除以进行生产。

  3. 修改vhost.conf或.htaccess文件可以很好地完成此任务,而无需记住添加和删除会话ID。但是不利的是,所有js和CSS资源的性能都会受到影响,如果文件很大,那将会使您的速度变慢。

两者似乎都是很棒的优雅解决方案-取决于您的需求。


1

我使用CTRL- SHIFT- DELETE激活的隐私功能,让您可以清除缓存,重置饼干等,都一次。您甚至可以对其进行配置,使其仅执行此操作,而不是弹出一个对话框要求您确认。


1

在较高版本的Firefox(如Nightly)中,有一个名为“禁用缓存”的选项,您可以通过单击齿轮找到它。该选项仅在当前会话中有效,这意味着当您关闭检查器并重新启动它时,如果要禁用捕获功能,则必须再次检查它。


我希望有一种全局禁用缓存的方法。每次打开检查器时都必须检查它,这很烦人。
卡洛斯·加西亚

0

经过2个小时的浏览,找到了各种替代方法,这对我很有用。

我的要求是在我的春季安全Web应用程序中禁用js和CSS文件的缓存。但是同时在“特定”会话中“缓存”这些文件。

建议的方法之一是在每个请求中传递唯一的ID。

这就是我所做的:-而不是

<script language="javascript" src="js/home.js"></script>

我用了

<script language="javascript" src="js/home.js?id=${pageContext.session.id}"></script>

欢迎上述方法有任何弊端。安全问题 ?


0

在firefox 45中,可以通过更改以下值来设置磁盘缓存选项:browser.cache.disk.enable

该值可以在“ about:config”页面上设置。

http://kb.mozillazine.org/关于:config_entries#Browser我找到了以下有关“ browser.cache.disk.enable”的描述:

True(默认):使用磁盘缓存,最大使用在browser.cache.disk.capacity中指定的容量False:禁用磁盘缓存(与将browser.cache.disk.capacity设置为0相同的效果)


0

首先,这很容易做到,例如通过PHP强制浏览器根据缓存日期(过期时间)更新文件。如果您只是出于实验需要而使用它,请尝试使用ctrl + shift + del一次清除Firefox浏览器中的所有缓存。第三种解决方案是使用许多Firefox退出的加载项,以根据时间线清除缓存。

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.