0

假设您在更新 PWA 期间,网络中断并且刷新缓存失败。这会让应用程序处于什么状态?刷新时是否会更新某些应用程序文件而其他则不会?当连接返回时,它会重试吗?多常?多少次?

4

1 回答 1

0

这取决于 service worker 是如何实现的。

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

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

如果您只在事件中清理缓存activate,那么您不必担心安装失败时会删除先前缓存的条目,因为除非过程成功activate,否则不会触发事件。install(您的 service worker 可能最终waiting处于介于两者之间的状态install并被activate解雇,这取决于是否使用旧版本的 service worker 打开了其他选项卡,以及您是否调用self.skipWaiting().)

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

于 2017-10-27T17:56:34.240 回答