例如我们有一个PWA应用程序在服务器上运行了一年,现在我们计划停止该服务(关闭服务器并删除DNS条目)
但是,当我们只是关闭服务器时,客户端浏览器仍将缓存PWA,并且用户在执行任何操作时都会看到错误消息,指出无法访问服务器。
我们如何优雅地处理这种情况?
更多详细信息:
This site can’t be reached
答案 0 :(得分:2)
您可以在关闭服务器之前发布新的网站版本吗?
您不仅可以在其中删除SW,还可以取消其缓存:
// Unregister the SW
navigator.serviceWorker.getRegistration()
.then(function(registration) {
if(registration){
registration.unregister()
.then(
function(success) {
// if success = true, unregister was successful
});
}
});
// Delete SW Cache
if ('caches' in window) {
caches.keys()
.then(function(keyList) {
return Promise.all(keyList.map(function(key) {
return caches.delete(key);
}));
})
}
如果您想看看它,我写了一篇有关Service Workers and caching strategies的文章。
当然,所有已经拥有软件支持并且不会在关闭门户之前访问您的门户的用户仍将使用旧版本,但是为此,我认为您没有太多控制权。
更新
我进一步检查了一些文档,但是找不到有关定时寿命的任何信息(甚至在MDN docs上也找不到)。因此,似乎无法从软件内部定义时间限制。
问题在于,一旦在客户端上安装了服务工作者,服务工作者便会在其线程上独立运行。因此,除非您允许安装新的软件,否则您将无法对其进行控制。 也许可能的解决方案是将当前URL地址重定向到特定的应用程序,只需下载新的SW(将其卸载并删除缓存)即可。