Javascript Angular2强制/硬重新加载浏览器缓存脚本?
我知道在网上有很多关于这方面的帖子,但没有一篇让我满意。 大多数人建议在每个脚本/css文件中添加一个verizon号码。但这听起来像是一个很大的工作对我来说(项目是qute位),也许有一些方法版本只输出文件,一些CLI命令我不知道 我的解决方案基于对API的简单ping来获取新版本号,当>存储后,重新加载页面。这里有一个棘手的部分-即使Javascript Angular2强制/硬重新加载浏览器缓存脚本?,javascript,angular,browser,angular2-routing,versioning,Javascript,Angular,Browser,Angular2 Routing,Versioning,我知道在网上有很多关于这方面的帖子,但没有一篇让我满意。 大多数人建议在每个脚本/css文件中添加一个verizon号码。但这听起来像是一个很大的工作对我来说(项目是qute位),也许有一些方法版本只输出文件,一些CLI命令我不知道 我的解决方案基于对API的简单ping来获取新版本号,当>存储后,重新加载页面。这里有一个棘手的部分-即使location.reload(true)也不会刷新缓存的数据。手动CTRL+SHIFT+R可以很好地完成这项工作。这对我来说已经足够好了,如果程序的硬加载可以
location.reload(true)
也不会刷新缓存的数据。手动CTRL+SHIFT+R可以很好地完成这项工作。这对我来说已经足够好了,如果程序的硬加载可以工作的话
我还尝试了this.compiler.clearCache()代码>但也没有效果
提前感谢!:) EDIT:如果您使用的是angular cli,@Tomasz的答案可能比下面列出的方法更好
理想情况下,您可以使用模块绑定器或任务运行器之类的工具来自动对文件进行“指纹识别”(即,根据文件内容为文件名添加唯一标识符)
但如果这不是一个选项,一个简单的破解方法是:
在HTML上设置缓存头以避免在浏览器上缓存
在HTML中的脚本标记URL中附加一个随机查询参数,您可以在每次需要新版本时更改该参数
更改随机查询参数(v
,在本例中)将确保浏览器发出新请求,因为URL不同于缓存(旧)版本,@angular/cli
会为您进行缓存破坏。如果使用--prod
标志运行ng build
,它会将哈希附加到脚本/css文件名
Thx!这将是完美的,但在尝试使用--prod标志构建时,我目前面临一个“JavaScript堆内存不足”的问题。我将尝试一些解决方法来增加构建的最大RAM量。或者你知道一些?找到了最大堆异常的解决方案。似乎我必须使用一个长命令,因为我们使用VST进行自动部署,所以我不能只编辑ng文件。”node--max_old_space_size=4096 node_modules/@angular/cli/bin/ng build--prod'实际上,我看到文件中附加了一个guid。希望这对我有帮助。又来了!
<script src='/js/some.js?v=1.1.3'></script>