在使用工作箱对服务工作者进行基准测试时,我们发现了一个有趣的现象。
应用服务工作者后,工作箱的网络优先策略比没有服务工作者联网要慢30毫秒。然后,我们尝试跳过工作箱并手动实施网络优先策略,这要慢20毫秒左右。
我的猜测是,如果服务人员加入,则所有请求都必须由JavaScript代码处理。 JavaScript代码的执行使联网速度变慢。
然后,我检查了缓存优先策略,事实证明,从缓存存储中获取内容比没有服务工作者从磁盘缓存(http缓存)中获取内容要慢。
所以,据我所知,即使服务人员为我们提供了更多的缓存控制权,也不能保证缓存速度更快,对吧?
答案 0 :(得分:3)
与启动以前未运行的服务工作者相关的成本。根据设备的不同,这可能在几十毫秒的数量级。一旦该服务工作者启动后,如果它不通过缓存来处理您的导航请求(几乎可以肯定是服务工作者将收到的第一个请求),那么您的最终性能可能会比根本没有服务人员在场。
如果您要使用缓存,那么在服务工作人员在场时应该提供大致相同的性能,而不是在HTTP浏览器缓存实际运行时对其进行查询,但是需要付出相同的启动成本首先考虑。
使用服务工作者的真正性能优势来自以缓存优先方式处理HTML的导航请求,而传统上,这是HTTP缓存无法做到的。
您可以在下面阅读有关这些折衷和最佳实践的更多信息 “ High-performance service worker loading”。