如果网络服务工作缓存更新失败,我会破坏PWA吗?

时间:2017-10-18 18:51:29

标签: workbox

让我们在更新PWA时说,网络中断并刷新缓存失败。离开应用程序的状态是什么?在刷新时,一些应用程序文件将被更新而其他应用程序文件不会更新当连接返回时,它会再次尝试吗?多常?多少次?

1 个答案:

答案 0 :(得分:0)

这取决于服务工作者的实施方式。

一个常见的模型,我建议使用的模型是在install事件期间处理缓存,并负责在activate事件期间从缓存中删除。

如果缓存添加包含在event.waitUntil()事件中的install内,并且其中一个添加会引发异常(由于网络故障或其他问题),则安装新的(或更新的)服务工作者将被视为失败。之前版本的服务工作者(如果有的话)将继续使用。下一次导航到服务工作者范围下的页面时,将针对新服务工作者触发一个新的install事件,并且将再次有机会执行其缓存添加。

如果您只清理activate事件中的缓存,那么在安装失败时您不必担心以前缓存的条目被删除,因为activate事件不会被触发,除非install进程成功。 (您的服务工作者可能会在waitinginstall被解雇之前处于activate状态,具体取决于是否使用旧版本的服务工作者打开了其他选项卡,以及是否或不是你致电self.skipWaiting()。)

https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#updates

有更多信息,示例代码和图表