我正在开发一个使用 ApplicationCache 离线工作的旧应用程序。由于它已被弃用,我们希望转向 Service Workers 来实现相同的目标。
Firefox 67 与我当前的 Service Worker 实现配合得很好:当我第一次访问该应用程序时,每个列为“待缓存”的文件都会被有效下载和缓存。然后可以离线访问该应用程序。
尽管如此,Chrome 74 和 Android WebView(看起来像是基于 Chrome 73 - 在 Cordova 应用程序内)的行为略有不同。当我第一次访问应用程序时,每个“要缓存”文件的请求都会放入缓存
中。当我在线时,浏览该应用程序效果很好。但后来我切换到离线状态,现在只能访问我已经访问过的页面。
这是一个错误还是一个功能?不管是什么,有什么解决办法吗?
最佳答案
最后,这是我的理解:Firefox 比较其 URL 上的缓存资源(string
)。因此,提供一个 URL 列表(string
)就足以让 Firefox 缓存它们,并在稍后使用 Request
对象(在浏览 Web 应用程序时发送)检索它们。
Chrome 显然将缓存的资源与另一个值进行比较(我还没有找到哪个值)。然后,提供 URL 列表(string
)对于 Chrome 来说是不够的。 Request
对象和 URL(string
)未被识别为相同。
基于W3C's specification cache.addAll
method ,Chrome 的行为应该是正确的。但 Firefox 的行为更为简单。
关于javascript - 使用 Service Worker 进行缓存 - Chrome 和 Android Webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295190/