Mor*_*eng 3 service-worker workbox
在使用 Workbox 对 Service Worker 的性能进行基准测试时,我们发现了一个有趣的现象。
当应用 Service Worker 时,Workbox 的网络优先策略比没有 Service Worker 网络慢约 30 毫秒。然后,我们尝试跳过workbox并手动实施网络优先策略,速度慢了大约20ms。
我的猜测是,如果 Service Worker 启动,所有请求都必须由 JavaScript 代码处理。JavaScript 代码的执行导致网络速度变慢。
然后,我检查了缓存优先策略,结果发现从缓存存储中获取内容比在没有 Service Worker 的情况下从磁盘缓存(http 缓存)中获取内容慢。
因此,根据我的理解,尽管 Service Worker 为我们提供了更多对缓存的控制,但并不能保证缓存速度更快,对吗?
启动之前未运行的 Service Worker 会产生相关成本。这可能约为数十毫秒,具体取决于设备。一旦该服务工作线程启动,如果它不通过缓存来处理您的导航请求(这几乎肯定是服务工作线程将收到的第一个请求),那么您最终的性能可能会比如果根本没有服务人员在场。
如果您要对抗缓存,那么拥有一个 Service Worker 应该会提供与在 HTTP 浏览器缓存实际运行后查找内容大致相同的性能,但需要首先考虑相同的启动成本。
使用 Service Worker 的真正性能优势来自于以缓存优先的方式处理 HTML 的导航请求,而传统上这不是 HTTP 缓存所能做到的。
您可以在“高性能 Service Worker 加载”中阅读有关这些权衡和最佳实践的更多信息。
| 归档时间: |
|
| 查看次数: |
1251 次 |
| 最近记录: |