【问题标题】:Multiple requests are being made from service worker to cache a resource服务工作者正在发出多个请求以缓存资源
【发布时间】:2023-04-09 07:28:02
【问题描述】:

因为我正在构建渐进式网络应用程序。我们正面临 Service Worker 的奇怪行为。

1. Clear cache and unregister service worker
2. Go to www.example.com
3. Examine the network calls for resources (JS/CSS)

预期结果: 一个资源只能请求一个网络请求。

实际结果: 正在为每个资源发出两个网络请求 [

【问题讨论】:

  • 如果不看你的 service worker 代码就很难判断。
  • 我将 sw-precache 用于静态资源,也将工具箱用于动态资源。保罗,这是因为 sw 并行注册并分别为预缓存项目发出网络请求吗?如果你愿意,我可以与你分享我的代码。

标签: service-worker progressive-web-apps sw-precache


【解决方案1】:

您在sw-precache 中看到的内容是获取资源以填充其缓存。这与受控页面发出的初始请求无关。这是一个相当常见的模型,无论您是否使用sw-precache

(顺便说一句,我看到您明确地对您的 JS 和 CSS 资源进行版本控制,这很棒。您会注意到 sw-precache 现在在其预缓存请求中附加了一个缓存破坏标头,这意味着它们'将始终反对网络而不是 HTTP 浏览器缓存。即将发布的 sw-precache 的 4.0.0 版本,您现在可以通过 master 分支使用它,有一个新的 dontCacheBustUrlsMatching option,它允许您选择-对于您通过文件名明确版本化的资源的缓存破坏。使用该选项意味着填充其缓存的额外sw-precache请求将通过HTTP浏览器缓存完成,跳过网络之旅。)

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多