这是我在网页中包含它的方式(在
<head>
元素内部):<script type="text/javascript" src="engine.js"></script>
当我在脚本的开头放置10个
console.log("asdf");
时,就好像它们不存在一样。当我去GC控制台的“资源”选项卡中查看时,我发现对该脚本没有任何更改被应用!请帮忙?在结尾处增加+ "?" + new Date()
是否有用?<head>
元素内部):<script type="text/javascript" src="engine.js"></script>
console.log("asdf");
时,就好像它们不存在一样。当我去GC控制台的“资源”选项卡中查看时,我发现对该脚本没有任何更改被应用!请帮忙?在结尾处增加+ "?" + new Date()
是否有用?在Chrome,Firefox和IE中通用的解决方案是通过Ctrl+Shift+Del清除缓存(在Mac上是⌘+Shift+⌫)。
❗️注意:只有在开发工具窗口打开时,缓存才会被禁用。
只有在未使用#1时才有意义。
一种跨浏览器的解决方案是在你的服务器端代码中附加一个随机生成的版本字符串作为查询参数,即调用你的脚本:
<script type="text/javascript" src="myscript.js?ver=12345"></script>
这个技巧将强制浏览器在ver
参数值变化时重新加载脚本。如果你使用ajax请求,则可以在URL后面追加"?ver=" + new Date().getTime()
。
注意:完成调试后不要忘记删除参数,因为在生产环境中你很可能想要脚本被缓存。然而,在每次新构建时生成一个新的时间戳是一种常见的做法——这可以在生产中使用,并且将确保在新部署后客户端始终获取更新的脚本。
与上述所有解决方案不同的是,即使在客户端和服务器之间有某种缓存(例如redis、memcached、varnish)或CDN(例如akamai、cloudflare、cloudfront等),这种解决方案也能够工作。
我也遇到了这个问题;CTRL+F5或SHIFT+F5从未奏效...唯一有效的方法是打开你的开发者工具(按F12),然后右键单击地址栏旁边的刷新图标,选择"硬刷新"或"清空缓存并强制刷新"
可能脚本已被缓存,因此从缓存中加载旧版本。如果您想确保获取新版本,可以强制浏览器重新加载,清除浏览器缓存,或更改脚本名称,或在文件名末尾添加不同的查询参数。
正如我在评论中所说,我猜测这是一个缓存问题,按下CTRL+F5应该足够了。如果不行,可以尝试按下CTRL+SHIFT+CANC并清除浏览数据。然而有时候是服务器存在某种缓存问题,我之所以这么说是因为在使用IBM WebSphere时,我经常遇到无法通过简单的F5刷新浏览器来解决的缓存问题。我只能等待我的Web服务器自行“刷新”。