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

Tar*_*rik 48 javascript browser windows

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

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

有人知道解决方案吗?

nop*_*ole 79

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

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

Firebug还有一个带有"禁用浏览器缓存"的网络选项卡

2017年更新:

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

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

<script src="my-js-file.js?v=1"></script>
Run Code Online (Sandbox Code Playgroud)

或者v=2,等等,当你肯定想刷新文件时.或者你可以去控制台做一个Date.now()并获得时间戳,例如1491313943549和使用

<script src="my-js-file.js?t=1491313943549"></script>
Run Code Online (Sandbox Code Playgroud)

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

<script src="main.742a4952.js"></script>
Run Code Online (Sandbox Code Playgroud)

这基本上会破坏缓存.

请注意,当您使用v=2t=1491313943549,或者main.742a4952.js,你也有优点,为您的用户,他们肯定会得到新的版本也是如此.

  • 刷新页面时 CTRL-F5 忽略缓存。但就 Chrome 而言,即使这样有时也不够,并且被迫清除首选项中的缓存。 (2认同)
  • CTRL + F5 在 chrome 中为我工作,反复按 3 次,谢谢。 (2认同)

小智 15

如何在标签上添加"?2"?

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

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

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


Ant*_*ony 13

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

  • 这是我的解决方案。出于某种原因,Ctrl + F5 没有解决我的问题。这是在 2017 年 3 月!! (2认同)

小智 9

我使用的解决方案是.使用firefox
1.使用web developer - > Web Console
2.在新选项卡中打开java-script文件.
3.刷新新选项卡,您应该看到新代码.
4.刷新原始页面
5.您应该看到您的更改.


小智 5

聚会有点晚了,但如果你把它放在你的 html 中,它会阻止你的网站更新缓存。加载网站需要更长的时间,但出于调试目的,我喜欢它。取自这个答案:如何以编程方式清空浏览器缓存?

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
Run Code Online (Sandbox Code Playgroud)


小智 5

我遇到了这个问题,并通过禁用缓存在 Chrome 中解决了这个问题: - 单击 F12;- 进入网络选项卡;- 单击“禁用缓存”。