在 Angular (2+) 中,如何强制客户端浏览器重新下载

Ste*_*uer 7 angular-cli angular

我正在使用 Angular CLI 创建一个应用程序。

我希望每当我发布应用程序的新版本时都重新下载客户端浏览器。

我假设我可以执行诸如将?v=1附加到脚本标记中的 JavaScript 文件之一的 URL 之类的操作,但这些标记在我构建时会自动添加。

Kry*_*anC 6

当您使用“ng build --prod”或“ng build --output-hashing = all”命令时,角度CLI将使用新的散列文件名构建您的应用程序(通常在“dist”文件夹中)。用户浏览器会将其识别为新文件并自动下载新版本。

编辑:
我对我的一个旧项目进行了快速测试并查看结果: ng 构建已测试

我只更改了 ts 文件中的一行,并且更改了两个 bundle.js 哈希文件。CSS 和供应商保持不变。所以对于浏览器来说,这将意味着它是一个全新的文件。确实,如果浏览器缓存带有旧引用的index.html,仍然会从缓存中加载旧的引用。

我在某个地方看到人们会弹出提示有新版本可用并鼓励用户刷新页面。我想这可以通过 ajax 调用 API 来请求最新版本并将其与 js 文件中存储的版本进行比较来完成 - 只是一个想法。