基于 PWA 的缓存调用会比网络调用慢吗?
这是我在其中一个 Web 应用程序中看到的 JSON 资源:
缓存清除并从服务调用:426 毫秒从服务工作人员调用(在开发工具/网络大小中,服务工作人员提到):576 毫秒
该文件在 Manifest.json 中没有条目,但在 ngsw-manifest.json 中以静态方式提及该文件。
我不确定这种想法是否错误,但看起来从缓存读取比网络调用这里的某些资源要慢。
基于 PWA 的缓存调用会比网络调用慢吗?
这是我在其中一个 Web 应用程序中看到的 JSON 资源:
缓存清除并从服务调用:426 毫秒从服务工作人员调用(在开发工具/网络大小中,服务工作人员提到):576 毫秒
该文件在 Manifest.json 中没有条目,但在 ngsw-manifest.json 中以静态方式提及该文件。
我不确定这种想法是否错误,但看起来从缓存读取比网络调用这里的某些资源要慢。
是的,如果您fetch
在服务工作者中有事件处理程序,那么它会为网络请求增加一些延迟。因为它拦截了来自您的应用程序的所有请求。但是,当您立即从 Cache Storage API 提供响应而不是通过网络提供响应时,使用它的美妙和好处就会大放异彩。
您可能想在有关 Google 搜索中的服务工作者使用情况的文章中阅读有关此主题的更多信息https://web.dev/google-search-sw/#problem:-service-worker-overhead
如果没有 service worker,这个网络请求会在用户导航时立即发生。当一个 service worker 被注册时,它总是需要被启动并有机会执行它的 fetch 事件处理程序,即使这些 fetch 处理程序除了去网络之外没有机会做任何事情。启动和运行 service worker 代码所花费的时间纯粹是在每次导航之上添加的开销。