2017-10-18 52 views

回答

0

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

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

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

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

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