sw-store-to-cache-storage.js (711B)
1 self.addEventListener('activate', (e) => { 2 e.waitUntil(clients.claim()); 3 }); 4 5 self.addEventListener('message', (e) => { 6 e.waitUntil((async () => { 7 8 const url = new URL(e.data.url); 9 const request = new Request(url, {mode: e.data.mode}); 10 const cache = await caches.open('v1'); 11 12 let response; 13 switch(e.data.source) { 14 case "service-worker": 15 response = new Response('foo'); 16 break; 17 18 case "network": 19 try { 20 response = await fetch(request); 21 } catch(error) { 22 e.source.postMessage('not-stored'); 23 return; 24 } 25 break; 26 } 27 28 await cache.put(request, response); 29 e.source.postMessage('stored'); 30 })()); 31 })