3

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

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

4

2 回答 2

3

是的,您可以看到缓存中的内容。查看您正在使用的示例存储库中的源代码,我发现它将缓存的 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。

于 2015-09-02T17:06:48.780 回答
0

从评论中提升这一点:

缓存存储 API 在最新版本的 Chrome 中也以 window.caches 的形式公开,因此您可以在受控页面中从 DevTools 执行该代码,而无需访问 service worker DevTools。它还在 DevTools 的“资源”选项卡中直观地公开:twitter.com/jeffposnick/status/546494702842028032 – Jeff Posnick 2015 年 9 月 2 日 17:51

感谢 Jeff P.

于 2016-01-13T23:47:07.937 回答