在Firefox中清除缓存的JavaScript文件引用

25
我正在开发一个网站的JavaScript部分,并使用Firefox进行开发。当我刷新页面时,无法看到我的更改。该JavaScript文件是外部文件。我重新加载和刷新页面多次,但旧的JavaScript文件仍被缓存。最后,我直接在浏览器中加载JavaScript页面,看到旧脚本后,点击“重新加载”,就看到了我的更改。
如何清除外部JavaScript文件的缓存?当我告诉客户更改已经完成时,他们不会看到旧的缓存功能,我也需要知道这个方法。
7个回答

16

要在Firefox中一次性绕过缓存:

某些Web托管服务在服务器端缓存页面。当绕过缓存时,Web浏览器将发送一个头文件以告诉服务器它不应该返回缓存的数据。


不仅在Firebug中,在普通的Firefox浏览器中,我在Web开发者工具的网络面板中找到了禁用浏览器缓存选项。 - undefined

14

在Firefox中,您可以安装一个名为Web Developer Toolbar的插件,该插件具有appcache clear命令。

我认为没有办法以编程方式完成此操作,但您可以使用类似于以下内容的方法向浏览器提示:

<script type="text/javascript" src='js/my.js?x=<?php echo rand(0,100) ?>'></script>

3
我有时也会这样做,当我希望所有当前用户得到新内容时。然而,我建议使用 filemtime('js/my.js') 而不是随机值。 - Thai
2
我发现Web开发者工具栏上的“禁用缓存”选项对我很有效 :) - user151841
这个例子是为了快速测试。您可以通过Web浏览器地址栏刷新JS文件。例如: <br/><br/>
  1. 假设您在网站www.foo.com上
  2. 包含一个名为bar.js的JS文件,并存储在根目录中
  3. 网站正在缓存旧版本的网站
  4. 使用随机查询字符串(例如www.goo.com/bar.js?random=random)直接在浏览器中显示JS文件
  5. 浏览器现在正在使用更新的JS文件版本。
- Jeremy Ray Brown

10

浏览器提供了用户可见的清除缓存功能,通常是在某个菜单选项中。你无法强制清除缓存。

但是,您可以通过安排脚本从根据版本号(或其他内容)变化的URL加载来实现:

<script src='http://your.site.com/js/big_script.js?version=2'></script>
现在当你更新代码时,你会同时更新使用该代码的页面:
<script src='http://your.site.com/js/big_script.js?version=3'></script>

那是一个不同的URL,它不会被缓存。


如果您的解决方案可以防止最终用户获取过期的Javascript,那么这将是一个很好的解决方案。 - floer32

7
一种非常流行的技术是使用查询字符串参数。它看起来可能像这样:

<script src="http://www.somedomain.com/foobar.js?v=1></script>

如果您将此行更改为v=2,浏览器将重新加载脚本(如果之前已缓存)。

2

禁用js缓存:开发者工具(F12)> 网络 > 禁用缓存

然后刷新页面:F5


1

Shift-reload 经常更彻底地清除缓存。然而,您真的不想依赖它。一个好的技巧是对外部 Javascript 的文件名进行版本控制,并在您 rev 时更新引用它们的 HTML。这样,您也可以更好地依赖缓存(例如,在您的 web 服务器上设置缓存头为“public”,并指定较长的过期时间)。


0
禁用Angular.js分解:开发工具(F12)&gt;调试器&gt; [设置图标]&gt;取消选中源地图

您可能需要重新启动Firefox。

源代码映射已阻止我对修改后的应用程序进行调试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接