我正在尝试构建一个使用 ServiceWorker 的网页。我按照这个例子(对于 Chrome 45+),它似乎缓存了一些数据。我试图访问缓存的数据但没有成功。
是否可以通过 Chrome 控制台(类似于本地存储)找到缓存的数据?我可以从控制台运行任何简单的 JS 代码来获取它吗?
我正在尝试构建一个使用 ServiceWorker 的网页。我按照这个例子(对于 Chrome 45+),它似乎缓存了一些数据。我试图访问缓存的数据但没有成功。
是否可以通过 Chrome 控制台(类似于本地存储)找到缓存的数据?我可以从控制台运行任何简单的 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。
从评论中提升这一点:
缓存存储 API 在最新版本的 Chrome 中也以 window.caches 的形式公开,因此您可以在受控页面中从 DevTools 执行该代码,而无需访问 service worker DevTools。它还在 DevTools 的“资源”选项卡中直观地公开:twitter.com/jeffposnick/status/546494702842028032 – Jeff Posnick 2015 年 9 月 2 日 17:51
感谢 Jeff P.