javascript - 如何访问 ServiceWorker 保存在缓存中的资源?

标签 javascript service-worker

我正在尝试构建一个使用 ServiceWorker 的网页。我关注了this example (对于 Chrome 45+),它似乎缓存了一些数据。 我尝试访问缓存数据但没有成功。

是否可以通过 Chrome 控制台找到缓存的数据(类似于 Local Storage)? 我可以从控制台运行任何简单的 JS 代码来获取它吗?

最佳答案

是的,您可以看到缓存中的内容。查看您正在使用的示例存储库中的源代码,我看到它将缓存的 url 存储在名为 CURRENT_CACHES['post-message'] 的缓存中。如果您在 service worker 中(转到 chrome://serviceworker-internals/,找到相关的 service worker 并检查它),这段代码将记录当前存储在其中的 url缓存:

caches.open(CURRENT_CACHES['post-message']).then(function(cache) {
  cache.keys().then(function(requests) {
    var urls = requests.map(function(request) {
      return request.url;
    });
    console.log(urls.sort());
  });
});

基本上,您只是打开缓存,对其调用 keys(),并记录返回的每个键(或缓存记录)的 url。

关于javascript - 如何访问 ServiceWorker 保存在缓存中的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32356499/

相关文章:

javascript - fetch 事件处理程序中的 fetch() 不会触发 service worker 中的 fetch 事件?

firebase - 带有 firebase 云消息传递的 Vue pwa 无法正常工作

javascript - Rails 抛出 "REXML::ParseException does not have a valid root"异常

javascript - leetcode 子集 javascript 代码返回空数组

javascript - 我自己对 Array.reduce() 和 Array.from(string) 的处理出现意外返回值

google-chrome - 为什么 Chrome 浏览器频繁更改端点

javascript - 删除附加的内容并在单击时添加其他内容

javascript - 将 2 个对象的值相加

javascript - Service Worker 中获取 API 错误

javascript - 如何使 service-worker.js 在浏览器打开时执行?