As part of the service worker API, a cache interface has been provided to manage cached request-response pairs. In working on the service worker for my site, I wanted to see what headers the cached requests and responses had, but due to the asynchronous way many of the cache properties are accessed, this was a bit verbose. I wrote out a script that I could paste in the JS console to look at all stored request-response pairs in a given cache so I could examine them:
caches.open('cache-name').then(function(_cache){
_cache.keys().then(function(_keys){
_keys.forEach(function(_request){
var _requestLog = [];
_requestLog.push(['request', _request.url, _request]);
_request.headers.forEach(function(){
_requestLog.push(['request header', arguments]);
});
_cache.match(_request).then(function(_response){
_requestLog.push(['reponse', _response]);
_response.headers.forEach(function(){
_requestLog.push(['response header', arguments]);
});
}).then(function(){
_requestLog.forEach(function(_item){
console.log.apply(console, _item);
});
});
});
});
});
Replace cache-name
with whatever key you’re using for your cache. Be warned that this will produce a long log if you’ve got more than a few items in the cache. You can also see just the requests you have a cache for with something like:
caches.open('cache-name').then(function(_cache){
_cache.keys().then(function(_keys){
_keys.forEach(function(_request){
console.log(['request', _request.url, _request]);
});
});
});