Javascript Angular2强制/硬重新加载浏览器缓存脚本?

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可以很好地完成这项工作。这对我来说已经足够好了,如果程序的硬加载可以

我知道在网上有很多关于这方面的帖子,但没有一篇让我满意。 大多数人建议在每个脚本/css文件中添加一个verizon号码。但这听起来像是一个很大的工作对我来说(项目是qute位),也许有一些方法版本只输出文件,一些CLI命令我不知道

我的解决方案基于对API的简单ping来获取新版本号,当>存储后,重新加载页面。这里有一个棘手的部分-即使
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>