与服务人员缓存-Chrome和Android Webview

时间:2019-05-24 15:00:47

标签: javascript html google-chrome android-webview service-worker

我处理一个使用ApplicationCache脱机工作的旧应用程序。由于不推荐使用,我们希望转到Service Workers来实现相同的目标。

Firefox 67与我当前的服务工作者实现非常兼容:当我第一次访问该应用程序时,被列为“待缓存”的每个文件都会被有效地下载和缓存。然后可以离线访问该应用。

尽管如此,Chrome 74和Android WebView(在Cordova应用程序内部看起来似乎基于Chrome 73)在功能上略有不同。当我第一次访问该应用程序时,每个“待缓存”文件的请求都放在cache中。当我在线时,浏览该应用程序非常有用。但是后来我离线,现在只能访问我已经访问过的页面。

这是错误还是功能?不管是什么,有什么解决方法?

1 个答案:

答案 0 :(得分:1)

最后,这是我所了解的:Firefox比较其URL(string)上的缓存资源。因此,提供URL(string)列表足以使Firefox缓存它们并稍后使用Request对象(在浏览Web应用程序时发送)检索它们。

Chrome显然会将缓存的资源与另一个值进行比较(我没有设法找到哪个)。然后,仅提供URL(string)列表对于Chrome而言还不够。 Request个对象和网址(string)不能被识别为相同的对象。

基于W3C's specification cache.addAll method,Chrome行为应该是正确的。但是Firefox的行为更简单。