2017-09-13 122 views
0

(我考虑把这个超级用户,但它真的更多的是编程的问题)需要角度重新编译后两次刷新浏览器

我使用的是在重新编译我的angularjs代码背景咕噜browsersync任务时,它检测到更改。我的角度是使用ES2015编写的,并使用Babel通过咕task任务进行编译。每次,在转储完成后,我必须在Chrome中执行一个艰难的CTRL-F5才能看到更改生效。在我的Chrome开发者工具中,我选中了“网络>禁用缓存”选项。为什么我需要刷新两次,有没有办法只需要刷新一次而不需要手动清除缓存或不得不使用某种黑客?

+0

缓存行为由Web服务器控制。这个问题不是特定于Angular或任何其他客户端的事情。如果您希望服务器不会缓存脚本,则会错误地配置它。 – estus

回答

1

我真的不知道这会帮助,但我有我加入一些随机字符串我的脚本的src后面解决类似的问题

//to tell the browser it's a different script 
<script src="myscript.js?id=123123121"></script> 

让浏览器识别为一个不同的脚本;我使用gulp,jspm,webpack和我实现上面的代码的方式是通过使用一个插件,它会在每次编译时用Date.now()重写脚本

+0

谢谢约翰,我正在寻找一种更干净的方法来解决这个问题,而不是必须破解的东西。 –

+0

@ChrisHalcrow这是处理这种情况的有效方法,特别是在生产中。 'id'可以是文件时间戳或build#。这将在启用浏览器缓存的同时刷新最终用户和开发人员的脚本。 – estus

0

我发现问题是我是使用单独的浏览器选项卡中的直接URL加载我的页面,而不是使用其指定的端口号连接到grunt browsersync的选项卡(我需要这样做是因为我的一些页面组件依赖于端口号,所以我需要来控制这一点)。在grunt transpile之后,我需要等到连接的url的浏览器重新加载完成后,才能在另一个选项卡中刷新我的页面,然后第一次看到刷新的代码。