【发布时间】: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 在这两种情况下都不起作用。
【问题讨论】: