如果网络在服务工作者缓存更新上失败,我会刷新PWA吗?

问题描述:

假设您在PWA更新期间切断网络并刷新缓存失败。该应用程序处于什么状态?在刷新时,一些应用程序文件将被更新,而另一些则不是?当连接返回时,它会再试一次吗?多久?多少次?如果网络在服务工作者缓存更新上失败,我会刷新PWA吗?

这取决于如何实施服务人员。

我推荐的一种常见模型是在install事件期间照顾添加到缓存中,并注意在activate事件期间从缓存中删除。

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

如果你只清理了activate事件缓存,那么你不必担心什么时候安装失败,被删除以前缓存条目,因为activate事件不会被解雇,除非install过程是成功的。 (您的服务工作人员可能会在waiting状态最终在installactivate之间被解雇,这取决于是否有其他选项卡使用旧版本的服务人员的开放,以及是否不叫self.skipWaiting()

有更多信息,示例代码和图表https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#updates