无论我做什么,JavaScript文件都不会更新

时间:2010-10-16 23:00:40

标签: javascript windows browser

我有一个外部JavaScript文件,无论是在FireFox还是Chrome中,是否清除了所有浏览数据,无论如何都不会更新。我相信当我备份文件时发生了某事,我只是在名称的末尾添加了“_thedate”。然后另存为原始名称。

现在我似乎无法摆脱旧JS,除非我更改文件的名称,我真的不想这样做,或者将脚本添加到PHP页面,这会挤满它。 / p>

任何人都知道解决方案吗?

14 个答案:

答案 0 :(得分:71)

您确定要链接到同一个文件,然后编辑同一个文件吗?

在某些浏览器上,您可以使用CTRL F5强制刷新。

Firebug还有一个带有“禁用浏览器缓存”的网络标签

2017年更新:

如果您使用谷歌浏览器调试器,它是相同的,您可以转到网络部分,并确保在调试器面板的设置中选中“禁用缓存(当DevTools打开时)”。

此外,当您链接JavaScript文件时,请使用

<script src="my-js-file.js?v=1"></script>

v=2,等等,当您确定要刷新文件时。或者您可以转到控制台并执行Date.now()并获取时间戳,例如1491313943549,然后使用

<script src="my-js-file.js?t=1491313943549"></script>

一些构建工具会自动为您执行此操作,或者可以配置为执行此操作,使其类似于:

<script src="main.742a4952.js"></script>

基本上会破坏缓存。

注意,当您使用v=2t=1491313943549main.742a4952.js时,您还可以获得以下优势:对于您的用户,他们肯定会获得更新的版本。

答案 1 :(得分:15)

如何在标签上添加“?2”?

<script src="a.js?2"></script>

服务器应返回带有或不带“?2”的相同文件,但浏览器应将其视为不同的文件并重新下载。只要文件发生更改,您就可以更改此查询字符串。

改编自:http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/

答案 2 :(得分:12)

之前我遇到过这个问题,这非常令人沮丧,但我找到了解决方法。输入js文件的完整地址(即yourhost.com/javascript.js)并加载它。您可能会看到旧版本加载。然后按f5刷新该页面,您应该看到新版本加载。 js文件现在将在缓存中更新,代码应该按预期运行。

答案 3 :(得分:9)

我使用的解决方案是。 使用firefox
1.使用网络开发者 - &gt; Web控制台
2.在新选项卡中打开java脚本文件 3.刷新新选项卡,您应该看到新代码 4.刷新原始页面 你应该看到你的变化。

答案 4 :(得分:3)

暂时将您的js文件重命名为其他内容。这是唯一对我有用的东西。

答案 5 :(得分:1)

浏览器缓存的最佳方法是在js文件的路径中附加一个随机数。

伪代码中的示例:

// generate a random number
int i = Random.Next();
echo "<script src='a.js?'" + i + "></script>";

这将确保您的浏览器始终重新加载文件,因为它认为它是一个不同的文件,因为网址中有随机数。

服务器将始终返回文件并忽略“?”之后的内容。

答案 6 :(得分:1)

我遇到了这个问题,并通过禁用Cache在Chrome中解决了: -点击F12; -转到网络标签; -点击“禁用缓存”。

答案 7 :(得分:1)

在 Firefox 和 Chrome 中,这真的很烦人,但因为它们的默认设置可以通过以下方式更改,然后它们才能工作。我在 Chrome 和 Firefox 中都尝试了相同的步骤顺序。

  1. 按 F12(打开检查器)
  2. 点击网络,然后点击禁用缓存
  3. 现在点击清除图标。在 Firefox 中,它在左上角显示为垃圾桶图标,在 Chrome 中它是左第二个图标,位于“停止录制”和“过滤器”之间。
  4. 现在按 F5 或刷新页面

他们会在重新下载资源时使用新副本更新资源。

答案 8 :(得分:0)

您是否100%确定您的浏览器甚至加载了脚本?转到Firefox中的页面并使用Firebug中的控制台检查脚本是否已加载。

答案 9 :(得分:0)

我有一段时间遇到同样的问题,并设法弄明白......我的情况是因为我有2个具有相同功能名称的javascript。

答案 10 :(得分:0)

派对有点晚了,但是如果你把它放在你的html中,它将使你的网站不会更新缓存。加载网站需要更长的时间,但出于调试目的,我喜欢它。取自这个答案:How to programmatically empty browser cache?

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

答案 11 :(得分:0)

1。清除浏览器开发人员工具中的浏览器缓存 2.在网络标签下–选择禁用缓存选项 3,重启浏览器 4,在Mac中强制重新加载Js文件命令+ shift + R 确保新战正确部署在服务器端

答案 12 :(得分:0)

别忘了检查webpack编译中的任何错误。有时由于webpack编译错误,app / javascript / packs /中的application.js不会重新加载。

答案 13 :(得分:0)

当我遇到这个问题时,我会尝试以下步骤:

  1. 硬刷新页面。

  2. 清除缓存 + cookie。

  3. 为我的脚本添加一个静态版本。

    src="my-script-name.js?v=1"

  4. 如果以上方法没有帮助,请在我的脚本中添加动态版本:

    src="my-script-name.js?v=" + Date.now() + Math.random()

相关问题