我在将angular的服务工作者集成到我的应用程序中遇到了困难。我按照指南操作,目前也能够使用。我可以在我的主屏幕上创建快捷方式并启动我的应用程序。问题在于我的应用程序似乎不更新。如果我更改按钮的名称,构建应用程序并将其放在服务器上,应用程序仍然显示旧版本,直到我按下F5(重新启动应用程序也没有帮助)。
我尝试将以下代码放入我的应用程序的ngOnInot中,但没有帮助
ngOnInit() {
if (this._SwUpdate.isEnabled) {
setInterval( () => {
this._SwUpdate.checkForUpdate().then(() => console.log('checking for updates'));
}, this.updateInterval);
this._SwUpdate.available.subscribe(() => {
console.log('update found');
this._SwUpdate.activateUpdate().then(() => {
console.log('updated');
window.location.reload();
});
});
}
}
这个应用正在我的apache2 Linux机器上运行。我的Apache是否缓存了什么,或者为什么我的应用程序没有意识到有一个新版本?
提前感谢您的帮助 :)
编辑:
My ngsw-config.json
{
"index": "/index.html",
"assetGroups": [{
"name": "roomPlan",
"installMode": "prefetch",
"resources": {
"files": [
"/index.html",
"/*.css",
"/*.js"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}]
}
编辑2:
如果我使用“http-server”在本地运行应用程序,它可以工作,但是当我将文件复制到我的Apache上时,它无法检测到更新。在网络选项卡中,我可以看到间隔起作用,应用程序每3秒从服务器获取一个新的“ngsw.json”。如果我更新我的应用程序,我可以看到“ngsw.json”响应中有新的哈希值。此后,浏览器从服务器加载新的“index.html”和“main.***.js”,但应用程序不适用新版本。根据我的代码,它应该显示“发现更新”,但什么也没有发生。