我有一个外部JavaScript文件,无论是在FireFox还是Chrome中,是否清除了所有浏览数据,无论如何都不会更新。我相信当我备份文件时发生了某事,我只是在名称的末尾添加了“_thedate”。然后另存为原始名称。
现在我似乎无法摆脱旧JS,除非我更改文件的名称,我真的不想这样做,或者将脚本添加到PHP页面,这会挤满它。 / p>
任何人都知道解决方案吗?
答案 0 :(得分:71)
您确定要链接到同一个文件,然后编辑同一个文件吗?
在某些浏览器上,您可以使用CTRL F5强制刷新。
Firebug还有一个带有“禁用浏览器缓存”的网络标签
如果您使用谷歌浏览器调试器,它是相同的,您可以转到网络部分,并确保在调试器面板的设置中选中“禁用缓存(当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=2
或t=1491313943549
或main.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 中都尝试了相同的步骤顺序。
他们会在重新下载资源时使用新副本更新资源。
答案 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)
当我遇到这个问题时,我会尝试以下步骤:
硬刷新页面。
清除缓存 + cookie。
为我的脚本添加一个静态版本。
src="my-script-name.js?v=1"
如果以上方法没有帮助,请在我的脚本中添加动态版本:
src="my-script-name.js?v=" + Date.now() + Math.random()