我一直坐在这里将近一个小时来测试我正在建设的网站。因为我想从我的代码中看到新的更改,我重新加载,但它正在重新加载旧的。我打开devetools进行硬重载并强制缓存硬重载,它们都加载我的旧代码。我去隐身模式,它也做了同样的事情。我再次使用devtools来禁用设置中的缓存,并在网络选项卡中检查禁用缓存;它仍然缓存我的旧代码。用于清除缓存的加载项也不起作用。伙计,我之前没有遇到这个问题,它只发生在昨晚,今天最糟糕。
我现在迷失了,因为chrome不会从我的javascript文件加载我的新更改。这有解决方案吗?
答案 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将自动更改。
这样,浏览器仍然可以缓存未更改的文件,同时立即识别更改。