当前,我正在Angular 2
Web服务器上托管一个Apache 2.4
应用程序,并且在客户端的浏览器中,新的生产部署之后,最新的网站更改不会呈现!我发现index.html被浏览器缓存。所有css和angular bundle文件的链接都可以在index.html上完成,因此它是应用程序的入口。我们有成千上万的活跃用户,因此我们不能坚持要求他们按下CTRL+F5
或执行hard reload
。
我已经用不同的生产方式(例如Thread1,Thread2)进行了检查,index.html也已经包含以下元标记。
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
我使用了角度代码,通过查询参数检查了缓存清除,并且还遵循了在每个组件中也使用module.id的良好做法。
@Component({
...
moduleId: module.id,
...
})
所以我的问题是
Angular 2 code
来加载新的index.html? -如果可以的话,请告诉我如何解决这个问题。您的帮助将不胜感激!
答案 0 :(得分:0)
您正在强制浏览器获取HTML页面的新版本,但是如果您生成具有相同名称的包的最新版本,则新HTML将以旧的js和CSS文件结尾。
一种常见的做法是使用一些自动生成的代码来修改包名称,以确保新版本的HTML和旧版本的请求不同的文件。 (缓存无效)
答案 1 :(得分:0)
问题不是index.html(如Andoni所说),您可以在捆绑文件名称上添加自动生成的随机前缀。
您可以使用以下命令对其进行存档:
ng构建-全部输出散列
更多选项在这里: