所以我有几个使用我的Angular 2应用程序打开浏览器窗口的客户端。然后我做了一个ng build --prod,并将新版本发布到服务器。
如何强制客户端刷新所有缓存的脚本?
答案 0 :(得分:4)
我刚刚完成了针对此问题的解决方案。
我尝试了一些不同的方法,但最终维护了一个单独的json文件,应用程序可以在设置的时间间隔内请求并与当前加载的版本进行比较,然后采取相应的行动。
我还通过谷歌和其他一些我希望会让问题消失的事情发挥作用。 SW-Precache这看起来很棒,但并不能很可靠地解决我们的问题,因为我无法找到一种方法来安排定期检查以使相关缓存无效。
第1号: 将新文件添加到angular-cli.json中的资产块,以便将其复制到分发文件夹中,而不包含在内置的js文件中,因为这会否定我们尝试执行的操作的全部内容。
"assets": [
"assets",
"favicon.ico",
"web.config",
"version.json"
],
然后我简单地创建了一个带有函数的简单服务来请求这个文件,另一个用来设置和间隔来重复调用请求。我也选择使用" hard"通过包含unix时间戳作为查询参数来缓存这些请求的缓存。这可能是旧学校,但它确保无论设置什么或何处设置,您都不会获得version.json文件的缓存版本。
最后,我建议使用某种方法将此version.json文件与应用程序的版本号内联。快速搜索给我带来了
在npm安装之后允许对语义版本号进行非常简单的修改。我在package.json中添加了一些脚本来自动确保version.json在构建之前与package.json一致,以确保没有hickup,因为代码已更改,但版本没有。