磁盘优先缓存策略失败

时间:2018-06-28 14:51:33

标签: workbox

对不起,但是我不知道该如何重现。我只是想了解此时的情况。

我正在研究定义了几种路由策略的PWA。在过去的一天里,服务人员陷入了糟糕的状态……。据我所知,没有更新。

所表现出的行为是试图满足请求时突然停止。通过反复试验,我能够追溯到我的后备路由-删除此路由(或完全绕过sw)可以解决问题。

此外,当此路由首先尝试从磁盘获取时,这只是一个问题-指定networkfirst或networkonly解决了该问题。

我试图清除缓存以及指定新的缓存后缀。这些都没有解决问题。新服务人员愉快地安装并提供了相同的空白页。

最后,重新启动浏览器似乎已解决了该问题。我不能合理地期望最终用户重新启动浏览器,因为他们会得到一个空白页。我真的很想了解发生了什么,以便将来可以防止它发生。

可能与之相关,我正在构建一个新的Web平台,并且很可能在此过程中某个地方的工作箱会出现40x或50x的变化。我只是“故意”在问题路由上缓存0和200的响应。

这是路线

    workbox.routing.registerRoute(
  new RegExp(/^(?!.+\/weather?|.+__utm.gif?)/),
  workbox.strategies.staleWhileRevalidate({
    cacheName: 'resources',
    plugins: [
      new workbox.expiration.Plugin({
        maxEntries: 250,
        maxAgeSeconds: 86400 * 30       // 30 days
      }),
      new workbox.cacheableResponse.Plugin({
        statuses: [0, 200]
      })
    ]
  })
);

但是,我将其简化为:

workbox.routing.registerRoute(
  new RegExp(/^(?!.+\/weather?|.+__utm.gif?)/),
  workbox.strategies.staleWhileRevalidate({
    cacheName: 'resources',
  })
);

正如我所说的,这是后备路线。真正重要的事情都由preCaching处理...但是这种回退仍然导致整个页面挂起。

一路走来,我更新到了工作箱3.3.1,但到那时看来,该错误已嵌入浏览器中。

浏览器信息:67.0.3396.62(开发人员内部版本)基于Debian buster / sid构建,并在Debian buster / sid(64位)上运行

0 个答案:

没有答案