服务工作者是否在争夺带宽?

时间:2016-06-22 11:31:10

标签: html5 offline-caching service-worker progressive-web-apps

服务工作人员在后台安装,而页面正在加载。

1)服务工作者脚本的下载是否与页面加载同时发生并延迟加载?

2)安装事件中提到的资产是否与页面加载并行或者页面加载事件完成后下载和缓存

3)资产的缓存是否尊重HTML Native缓存,还是每次都重新加载?

3 个答案:

答案 0 :(得分:3)

第一次,当您注册时,将获取服务工作者。对于更新检查,浏览器会按导航执行此操作,但会在加载后等待,以避免与页面竞争。

答案 1 :(得分:2)

服务工作者的生命周期与您的网页完全分开。

  • 服务工作者在工作者上下文中运行:因此它没有DOM访问权限,并且在与为您的应用程序提供支持的主JavaScript的不同线程上运行,因此它不会阻止。它被设计为完全异步;因此,诸如同步XHR和localStorage之类的API不能在服务工作者中使用。
  • 服务人员有自己的生命周期。通常在安装阶段,您需要缓存一些静态资产。如果所有文件都已成功缓存,则会安装服务工作者。
  • 当然,浏览器会一直缓存内容。这里的优点是持久性和控制力。当应用程序缓存更持久时,浏览器缓存很容易被覆盖。配置不当的服务器通常会迫使客户端不必要地重新获取内容,例如您无法控制的托管服务提供商。具有完整缓存API的服务工作者允许客户端完全控制,并可以更明智地决定缓存的内容和时间。

答案 2 :(得分:0)

  

1)服务工作者脚本的下载是否与页面加载同时发生并延迟加载?

当您致电register()并且它并行执行时,就会发生下载服务工作人员,因此不会延迟负载。

  

2)安装事件中提到的资产是否与页面加载一起下载和缓存,或者在页面加载事件结束后。

在服务工作者中发起的任何网络请求都不会阻止主线程,也不会阻止文档加载。

  

3)资产的缓存是否尊重HTML Native缓存,还是每次都重新加载?

如果您愿意,发起服务工作者的请求会尊重本机缓存(http cache),但you can modify this behavior with the cache property

从问题来看,您似乎认为服务工作者的注册与文档负载协调,但不是。一旦调用register()或发现服务工作者更新后,注册服务工作者的所有阶段都会从网页加载中解耦(并行运行)。