javascript - 使用 Service Worker 进行缓存 - Chrome 和 Android Webview

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

我正在开发一个使用 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/

相关文章:

javascript - Chrome 应用程序 将一个页面打开到另一个页面

javascript - AngularJS 将 html 附加到 dom 元素

javascript - 在 Angular 模型中显示数据的问题

javascript - 当浏览器未实现 HTMLUnknownElement 时,如何检查元素是否为未知类型

php - 如何显示特定名称的计数?并使用 php sql 显示页面?

google-chrome - 在打印预览模式下使用 Chrome 的元素检查器?

javascript - 数组长度与数组中值的数量

javascript - Heroku Nodejs 路径问题...错误 : ENOENT: no such file or directory

javascript - 在 Meteor Mongo 上添加、减去和比较日期和时间

caching - Chrome 缓存就像一个疯狂的浏览器