Chrome无法识别我的javascript文件中的更改并加载旧代码?

时间:2017-03-08 15:33:42

标签: javascript google-chrome caching

我一直坐在这里将近一个小时来测试我正在建设的网站。因为我想从我的代码中看到新的更改,我重新加载,但它正在重新加载旧的。我打开devetools进行硬重载并强制缓存硬重载,它们都加载我的旧代码。我去隐身模式,它也做了同样的事情。我再次使用devtools来禁用设置中的缓存,并在网络选项卡中检查禁用缓存;它仍然缓存我的旧代码。用于清除缓存的加载项也不起作用。伙计,我之前没有遇到这个问题,它只发生在昨晚,今天最糟糕。

我现在迷失了,因为chrome不会从我的javascript文件加载我的新更改。这有解决方案吗?

3 个答案:

答案 0 :(得分:12)

此问题的一个解决方案是强制重新加载资源以避免缓存。您可以使用http get参数修改网址:

变化:

<script src="myscripts.js"></script>

为:

<script src="myscripts.js?newversion"></script>

其中 newversion 可以是任何字符串,因为它将被忽略。一个有用的选项是使用代码的日期或版本。

当我遇到同样的问题时,我发现这种解决方法特别有用,并且希望确保所有客户端(不仅仅是我自己的浏览器!)都能运行新版本的代码。

答案 1 :(得分:1)

您使用的是任何类型的编译工具(如gulp或grunt)吗?您的代码可能存在错误,并且该工具未编译更新的代码。

否则,@ airos建议的解决方案应该有效。将任何唯一的查询字符串附加到JS的引用将始终在第一次重新加载时提供新的副本(因为浏览器将缓存新的URL)。

答案 2 :(得分:1)

我认为还有更好的方法:

您可以使用PHP将JavaScript文件的最后修改日期添加到该文件的URI中。

<script src="js/my-script.js?<?php echo filemtime('js/my-script.js'); ?>"> 
</script>

浏览器将收到:

<script src="js/my-script.js?1524155368"></script>

如果文件已更新,文件的URI将自动更改。

这样,浏览器仍然可以缓存未更改的文件,同时立即识别更改。