我有一个使用Angular Service Worker(版本7.2.12)的Angular应用程序(版本7.2.2)。
服务工作者间歇性地提供该应用程序的旧版本。刷新时会显示新版本,但是如果用户关闭并重新打开浏览器选项卡,它将恢复为旧版本,直到重新加载下一页。显示旧版本时,“ / ngsw / state”页面也没有错误。
我一直未能成功重现该问题。部分原因是我不确定原因。我经常走了好几个星期而没有服务人员提供旧版本的代码。
我尝试过的一些有希望的潜在解决方案包括:
答案 0 :(得分:0)
您可能想在这里查看详细信息。简而言之,请注意,服务工作者的注销很慢,并且已在后台完成。为了在开发人员阶段快速往返,您可能需要手动注销并重新加载。
在以下位置查看信息: https://love2dev.com/blog/how-to-uninstall-a-service-worker/
原始GIST指出我们应该在启动之前清理服务人员:
self.addEventListener(“ activate”,function(e){
self.registration.unregister()
.then(function() {
return self.clients.matchAll();
})
.then(function(clients) {
clients.forEach(client => client.navigate(client.url));
});
});
不过,该帖子建议使用此增强版本:
self.addEventListener("activate", function(e) {
self.registration.unregister()
.then(function() {
return self.clients.matchAll();
})
.then(function(clients) {
clients.forEach(client => {
if (client.url && "navigate" in client){
client.navigate(client.url))
}
});
});
我还要确保:
我希望其中一些建议能使您朝正确的方向前进。