Firefox服务工作者在启用“离线工作”的情况下获取信息,感到困惑

时间:2018-07-03 08:51:22

标签: firefox service-worker

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

我刚刚遇到了一个奇怪的问题,由于Firefox和Chrome的行为似乎有所不同,这一事实变得更加奇怪

  • 我在同一站点上有2个服务人员,一个服务人员作用于文件夹a,一个服务人员作用于文件夹b。
  • 我有2个网页,网页a和网页b。每个网页都有自己的服务人员
  • 网页a具有一个iframe,该iframe将包含在在线页面或离线网页b中
  • 当您离线访问网页a时,iframe中会显示网页b

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

该网站在离线状态下无法在Chrome中工作,它正尝试从服务器获取调用中的文件。它确实在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在两种情况下均不起作用。

1 个答案:

答案 0 :(得分:0)

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