【问题标题】:Firefox service workers fetch with 'work offline' enabled, confusionFirefox 服务人员在启用“离线工作”的情况下获取,混乱
【发布时间】:2018-07-03 16:51:22
【问题描述】:

tldr:Firefox 中的“脱机工作”与实际脱机不同。不要将其与开发者工具中 Chrome 的“离线”模式混淆

我刚刚遇到了一个奇怪的问题,因为 Firefox 和 Chrome 的行为似乎不同而变得更加奇怪

  • 我在同一个站点上有 2 名服务人员,一名针对文件夹 a,一名针对文件夹 b。
  • 我有 2 个网页,网页 a 和网页 b。每个网页都有自己的 Service Worker
  • 网页 a 有一个 iframe,其中包含在线页面或离线网页 b
  • 当您离线时,网页 a 会在 iframe 中显示网页 b

我遇到了一个错误,服务人员 b 在激活时意外清除了站点上所有服务人员的缓存。

该网站在离线时无法在 Chrome 中运行,它正在尝试从服务器获取 fetch 调用中的文件。它确实在 Firefox 中工作

我有如下代码显示缓存的内容。

function ShowAllFromCache()
{
    console.log("ShowAllFromCache: cache name: " + STARTSW_CACHE)

    caches.open(STARTSW_CACHE).then(function (cache)
    {
        cache.keys().then(function (keys)
        {
            console.log(keys);
        });
    });
}

在服务人员 B 激活并清除缓存后,缓存为空,但我可以在开发人员工具中看到 fetch 调用表明文件不在缓存中并将转到服务器。然后它说它会进行一次 xhr 调用,持续时间为零,以获取文件并成功。它没有击中服务器

如果我在物理上断开互联网连接,则会收到错误消息:

“损坏的内容错误

该站点遇到无法修复的网络协议冲突。

由于检测到数据传输错误,无法显示您尝试查看的页面。”

Chrome 在这两种情况下都不起作用。

【问题讨论】:

    标签: firefox service-worker


    【解决方案1】:

    这是因为 Firefox 的离线模式与离线模式不同。例如去 bbc.com,下线,刷新页面。您仍然会看到该页面

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-18
      • 2020-05-31
      • 2017-01-18
      • 2018-11-29
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多