工作箱中的条件预缓存

时间:2018-08-21 18:38:55

标签: service-worker workbox workbox-webpack-plugin

在某些情况下,作为严格要求,应用程序可能需要相对较大的资源,但仅在某些情况下,服务人员很难检测到。例如:

  • Safari具有Web Audio API的前缀和不合格实施。我找到了一个很棒的填充程序,但是它超过了300kb。对于Web应用程序来说,在Safari中正常运行至关重要,但在其他浏览器中则不必要。
  • 某些媒体可能会以多种格式提供,但不一定总是受支持。视频通常太大而无法预缓存,并且存在范围请求方面的问题,但是它可以应用于WebP图像或简短的音频文件(例如Opus与AAC)。如果您在预缓存清单中包含所有格式,则默认情况下它将下载所有格式。

一种方法是从预缓存清单中手动排除某些文件,然后有条件地从主线程上的脚本加载这些文件以存储在运行时缓存中。但是,这些文件不会被预先缓存-它们仅在新版本激活后才加载,这时您可能不再在线。

是否有允许以下操作的解决方案?:

  • 让服务工作者使用检查各种情况的“测试”脚本的URL向主线程发送消息。
  • 在主线程上加载并运行该脚本,并将所需的条件资产列表发送给服务工作者
  • 将这些资产添加到预缓存清单中,以便与先前版本进行比较并根据需要下载
  • 在加载了所有预缓存的资产(包括有条件的资产)之前,服务人员不应该切换到新版本。

0 个答案:

没有答案