我处理一个使用ApplicationCache脱机工作的旧应用程序。由于不推荐使用,我们希望转到Service Workers来实现相同的目标。
Firefox 67与我当前的服务工作者实现非常兼容:当我第一次访问该应用程序时,被列为“待缓存”的每个文件都会被有效地下载和缓存。然后可以离线访问该应用。
尽管如此,Chrome 74和Android WebView(在Cordova应用程序内部看起来似乎基于Chrome 73)在功能上略有不同。当我第一次访问该应用程序时,每个“待缓存”文件的请求都放在cache
中。当我在线时,浏览该应用程序非常有用。但是后来我离线,现在只能访问我已经访问过的页面。
这是错误还是功能?不管是什么,有什么解决方法?
答案 0 :(得分:1)
最后,这是我所了解的:Firefox比较其URL(string
)上的缓存资源。因此,提供URL(string
)列表足以使Firefox缓存它们并稍后使用Request
对象(在浏览Web应用程序时发送)检索它们。
Chrome显然会将缓存的资源与另一个值进行比较(我没有设法找到哪个)。然后,仅提供URL(string
)列表对于Chrome而言还不够。 Request
个对象和网址(string
)不能被识别为相同的对象。
基于W3C's specification cache.addAll
method,Chrome行为应该是正确的。但是Firefox的行为更简单。