是否有推荐的策略在Firefox中从appcache迁移到ServiceWorker

pir*_*lot 8 firefox service-worker

我工作的一个旅行计划应用程序是用于实现与组合离线支持appcachelocalStorage.一旦服务工作者成为可行的选择,我们就开始使用它.转换在Chrome(Chromium,Opera等)中顺利完成,但Firefox(44和45)都存在一些问题:Firefox注册了新的服务工作者,但是从过时的appcache中填充了其范围内的页面.

换句话说,如果你有幸从未偶然发现我们的网站,如果你是第一次在FF 44/45中打开它,你将会得到一个新的闪亮服务工作者,以满足你所有的离线需求.生活是美好的.

但是,如果您在启用Service Worker之前不幸使用Firefox,那么您的appcache中仍然会有我们网站的旧版本.

  1. 你去了欢迎页面 - 服务工作者被激活,它(据说)负责处理整个范围的一切
  2. 你登录,它重定向你在SW范围(/ ui)中的一个页面 - 它仍然应该由服务工作者处理,但相反,Firefox突然意识到它有旧的appcache,甚至没有尝试从网络加载任何东西它从appcache加载旧内容

我可以这样做(尽管我的Mozilla文档的读数告诉我应该在服务工作者控制的范围内忽略appcache)如果只发生一次.遗憾的是,Firefox甚至没有尝试获取清单来检查旧的appcache是​​否是最新的.如果它确实尝试获取清单,它将收到404,这将使appcache失效(就像在Chrome上一样).我在电线(或服务器端)上看不到类似的东西.

为了加重侮辱,Firefox控制台自豪地宣布:Application Cache API(AppCache)已被弃用,将在未来删除.请考虑使用ServiceWorker进行脱机支持.:-)

简单刷新(F5)确实通过服务工作者加载当前版本的页面.可悲的是,它只能工作一次.在关闭并重新打开选项卡之后,整个舞蹈将重放自己:服务工作者负责范围内的所有页面,但过去具有appcache清单声明的页面除外.

清除appcache(appcache clear在开发人员的控制台中或通过设置UI)确实可以解决问题,但我无法向所有Firefox用户提出建议.

我试图找到一些没有太多运气的Firefox bugzilla.如果有人能找到一个很好的相关问题.目前我们只需要禁用对Firefox的SW支持.

是否有任何方式向Firefox发信号通知它应该在Service Worker范围内忽略旧的appcache?

bbs*_*nbb -2

为什么不能只修改 appCache .manifest 文件?提供一个空文件、垃圾链接或一些虚拟页面,只是为了让新的 .manifest 被接受,而旧的应该成为历史。