From 2e185200b0fc7210077e119e856c84c6fe596cb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aciana?= Date: Thu, 27 Jan 2022 15:26:54 +0100 Subject: [PATCH] Change strategy: try get from network when success return and add do cache, otherwise try get response for cache. --- serviceWorker.js | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/serviceWorker.js b/serviceWorker.js index d0a7301..c744bb6 100644 --- a/serviceWorker.js +++ b/serviceWorker.js @@ -19,18 +19,26 @@ self.addEventListener('activate', event => { console.log('SW now ready to handle fetches!'); }); -self.addEventListener('fetch', (event) => { - console.log('SW fetch: ' + event.request.url); - event.respondWith( - caches.match(event.request).then((resp) => { - return resp || fetch(event.request).then((response) => { - return caches.open(cacheName).then((cache) => { - if(event.request.method == 'GET') { - cache.put(event.request, response.clone()); - } - return response; + +self.addEventListener('fetch', event => { + event.respondWith( + // try get response from network + + fetch(event.request).then(async response => { + // if network success, cache it for all GET requests + var responseClone = response.clone(); + + if(event.request.method == 'GET'){ + await caches.open(cacheName) + .then(cache => { + cache.put(event.request, responseClone); }); - }); + } + return response; + }).catch(function(){ + // if network fails, try get response from cache + + return caches.match(event.request); }) ); });