如何在 Firefox 上关闭缓存?

Posted

技术标签:

【中文标题】如何在 Firefox 上关闭缓存?【英文标题】:How to turn off caching on Firefox? 【发布时间】:2010-09-22 07:55:38 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

在火狐地址栏输入“about:config”并设置:

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

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

browser.cache.offline.enable = false

【讨论】:

network.http.use-cache 不适合我。更改 browser.cache.offline.enable 对我没有任何影响。 我不怀疑这是一个很好的答案,但在最新的 firefox 版本中似乎不再适用(我目前使用的是开发人员版本 47.0a2)。不过,在 Web 开发人员设置中禁用缓存对我来说很有效。【参考方案2】:

Web Developer Toolbar 有一个禁用缓存的选项,可以在需要时轻松打开和关闭它。

【讨论】:

CTRL-F5 或在单击重新加载按钮时按住 shift 键是我过去所做的,但是 Web 开发人员工具栏的“禁用缓存”功能是一个很好的方法。您不必以这种方式完全禁用 Firefox 的缓存。 您应该记得在测试后启用缓存。 ;) @Shanimal,它在 14.0.1 中对我有用,您可能需要卸载/重新安装或其他东西。 @Lucas doh!我正在使用的服务器上的项目正在缓存,但我忘了删除我的评论......谢谢。 在 chrispederick 修复了最新版本中的一些新的 Firefox 更改之前,这将不再有效。我会选择对开发人员更好的 about:config 解决方案。【参考方案3】:

你试过用CTRL-F5更新页面吗?

【讨论】:

我真的怀疑这是否可靠,至少在存在 iframe 和框架集的情况下。 正确,它不会总是在 iframe 中重新加载 JS/CSS,但在 Firefox 中,您至少可以将该框架弹出到新选项卡中,然后在那里重新加载。 我一直使用 Ctrl-F5....然后我发现它不会加载我正在使用的最新版本的 js 文件:( 也在 iframe 中(我知道, iframe 是魔鬼,不是我的选择)。 Ctrl-F5 不会重置 javascript 文件的缓存。它的作用(主要)是清除会话和 cookie,而不是缓存的 javascript 和样式表【参考方案4】:

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

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

【讨论】:

【参考方案5】:

Firefox 48 开发者工具

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

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

https://***.com/a/27397425/895245 有类似的内容,但定位有所改变。

【讨论】:

谢谢...那里(和此线程中)有关于将 network.http.use-cache 设置为 false 的信息...但在我的 FF (53) 版本中,该设置不再存在...无论如何,这种技术要优越得多。【参考方案6】:

在您想要禁用缓存的同一页面上执行以下操作: 仅供参考:正在开发的版本是 30.0

你可以:

之后它会从它自己的页面重新加载(你在)并且所有的东西都被重新缓存并且任何进一步的请求也每次都被重新缓存,你可以让 Web 开发人员始终保持打开状态以密切关注并确保它始终处于打开状态(检查)。

【讨论】:

【参考方案7】:

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

src="yourJavascriptFile.js?randomNumber=434534"

每次随机生成randomNumber。

【讨论】:

这是唯一对我有用的解决方案,除了每次刷新时手动清除浏览器缓存。【参考方案8】:

我知道我正在复活一个古老的问题,但我今天试图解决这个问题并有一个替代解决方案。当我想测试时切换缓存对我来说并不是真的可以接受,正如其他人提到的,硬刷新 (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 等中进行测试也很容易。

在这里找到了 sn-p,还有一些其他方便的 apache 技巧:http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess

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

jquery.somefile.js?v=0.5

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

【讨论】:

【参考方案9】:

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

您需要针对您的特定环境工具进行调整,但如果您使用的是 php/Apache,这对您和最终用户来说都是一个很好的解决方案。

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

【讨论】:

【参考方案10】:

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

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

network.http.use-cache = false

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

这是一个用于 apache 网络服务器的 example。

【讨论】:

【参考方案11】:

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

【讨论】:

Firebug 已停产。【参考方案12】:

最后发布的两个解决方案各有利弊,但恕我直言,它们都是很棒的解决方案。

    您可能希望也可能不希望将会话 ID 嵌入到您的 url 中,以提高安全性。但是在开发中这应该无关紧要,但是如果您忘记删除它怎么办? 这也真的有效吗?您是否不需要像序列号生成器这样的东西(存储在会话中的命中计数,或者甚至可能只是 1 然后 0,如果 0 则 1)?

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

    修改 vhost.conf 或 .htaccess 文件可以很好地解决问题,而无需记住添加和删除会话 ID。但缺点是所有 js 和 css 资源的性能都会受到影响,如果你有大文件,那会减慢你的速度。

两者看起来都是很棒的优雅解决方案——取决于您的需求。

【讨论】:

【参考方案13】:

我使用 CTRL-SHIFT-DELETE 来激活隐私功能,允许您清除缓存、重置 cookie 等立刻。您甚至可以对其进行配置,使其直接执行,而不是弹出一个对话框要求您确认。

【讨论】:

【参考方案14】:

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

【讨论】:

我希望有一种方法可以全局禁用缓存。每次打开检查器都要检查它很烦人。【参考方案15】:

在浏览了 2 个小时的各种替代方案后,这对我有用。

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

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

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

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

我用过

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

欢迎对上述方法提出任何缺点。安全问题?

【讨论】:

【参考方案16】:

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

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

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

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

【讨论】:

【参考方案17】:

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

【讨论】:

以上是关于如何在 Firefox 上关闭缓存?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Firefox中检查预检结果缓存的内容

如何清除 Firefox 中的 Service Worker 缓存?

如何在接收 Firefox 推送通知时删除缓存

firefox 如何设置关闭之后再打开都是上次浏览时未关闭的页面

如何在现代 x86/amd64 芯片上关闭 L1、L2、L3 CPU 缓存?

Firefox 特定的保证金? [关闭]