如何在新部署 Angular2 应用程序后刷新浏览器

2024-01-05

因此,我有几个使用 Angular 2 应用程序打开浏览器窗口的客户端。然后我执行 ng build --prod,并将新版本发布到服务器。

如何强制客户端刷新所有缓存的脚本?


我刚刚完成了这个问题的解决方案。

我尝试了几种不同的方法,但最终维护了一个单独的 json 文件,应用程序可以按设定的时间间隔请求该文件,并将其与当前加载的版本进行比较,然后采取相应的操作。

我还使用了 google 的 sw-precache 以及其他一些我希望能够解决问题的东西。软件预缓存 https://github.com/GoogleChrome/sw-precache这看起来很棒,但并不能完全可靠地解决我们的问题,因为我找不到一种方法来安排定期检查以使相关缓存无效。

问题一: 将新文件添加到 angular-cli.json 中的 asset 块中,以便将其复制到分发文件夹中,而不包含在构建的 js 文件中,因为这会否定我们正在尝试做的整个事情。

  "assets": [
    "assets",
    "favicon.ico",
    "web.config",
    "version.json"
  ],

然后我简单地创建了一个简单的服务,其中包含一个请求该文件的函数,以及另一个用于设置和间隔重复调用该请求的函数。我还选择通过包含 unix 时间戳作为查询参数来对这些请求使用“硬”缓存清除。这可能是老派,但它确保无论设置什么或在何处设置,您都不会获得 version.json 文件的缓存版本。

最后,我会推荐一些方法来保持此 version.json 文件与应用程序的版本号一致。快速搜索给我带来了

NPM 上的版本 https://www.npmjs.com/package/versiony

在 npm 安装之后,允许对语义版本号进行非常简单的修改。我在 package.json 中添加了一些脚本,以在构建之前自动确保 version.json 与 package.json 一致,以确保不会出现问题,因为代码已更改,但版本未更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在新部署 Angular2 应用程序后刷新浏览器 的相关文章

随机推荐