所以,我有一个名为“引擎”的脚本,经过多次打嗝和(徒劳)调试后,我发现GC根本没有重新加载它!
这是我将其包含在网页(<head>
元素内)中的方式:
<script type="text/javascript" src="engine.js"></script>
当在脚本开头放置10 console.log("asdf");
时,就好像它们不存在一样。当我进入GC控制台的“资源”选项卡时,我发现没有对该脚本进行任何更改! HLEP?将+ "?" + new Date()
放在最后帮助吗?
答案 0 :(得分:26)
适用于Chrome,Firefox和IE的通用解决方案是通过 Ctrl + Shift + Del 清理缓存(在Mac ⌘ + 移 + ⌫)。
❗️注意:当devtools窗口打开时,缓存将仅禁用
只有在未使用#1时才有意义。
可用于调试的与浏览器无关的解决方案是在服务器端代码中附加一个随机生成的版本字符串作为查询参数,即将脚本调用为:
<script type="text/javascript" src="myscript.js?ver=12345"></script>
当ver
参数的值发生变化时,此技巧将强制浏览器重新加载脚本。如果您提出了ajax请求,则可以将"?ver=" + new Date().getTime()
附加到您的网址。
注意:完成调试后不要忘记删除参数,因为在生产环境中,您很可能执行希望缓存脚本。通常的做法是在每个新构建上生成一个新的时间戳 - 这可以在生产中使用,并确保在新部署之后客户端将始终获得更新的脚本。
与上述所有解决方案不同,即使您在客户端和服务器之间进行某种缓存(例如redis,memcached,varnish)或CDN(例如akamai),这个解决方案也会有效。
答案 1 :(得分:1)
脚本可能会被缓存,因此旧版本从缓存加载。如果您想确保获得新版本,可以强制浏览器重新加载,清除浏览器缓存或更改脚本名称,或在文件名末尾添加不同的查询参数。
答案 2 :(得分:1)
这也让我感到烦恼; CTRL + F5或SHIFT + F5从未奏效...... 唯一有效的方法是打开您的开发工具(点击F12),然后右键单击地址栏旁边的重新加载图标,然后选择“硬重新加载”或“清空缓存和硬重载”
答案 3 :(得分:0)
正如我在评论中所说的,我认为这是一个缓存问题,如果不是CTRL + SHIFT + CANC并清除浏览数据,CTRL + F5应该足够了。然而,有时它是具有某种缓存的服务器,我说这是因为在IBM WebSphere中我经常会遇到缓存问题,而我的浏览器上只有一个简单的F5无法解决。我只需要等待我的网络服务器“刷新”自己。
答案 4 :(得分:0)
2016年10月21日最新的Chrome稳定版。