| self.clients.claim(); | self.clients.claim(); | ||||
| }); | }); | ||||
| // fetch events (Network first strategy, no cache update after install) | |||||
| // fetch events (Network first strategy, cache update after fetch) | |||||
| self.addEventListener('fetch', function (event) { | self.addEventListener('fetch', function (event) { | ||||
| event.respondWith(fromNetwork(event.request, 30000).catch(function () { | event.respondWith(fromNetwork(event.request, 30000).catch(function () { | ||||
| return fromCache(event.request); | return fromCache(event.request); | ||||
| var timeoutId = setTimeout(reject, timeout); | var timeoutId = setTimeout(reject, timeout); | ||||
| fetch(request).then(function (response) { | fetch(request).then(function (response) { | ||||
| clearTimeout(timeoutId); | clearTimeout(timeoutId); | ||||
| var responseClone = response.clone(); | |||||
| caches.open(staticCacheName).then(function (cache) { | |||||
| cache.put(request, responseClone); | |||||
| }); | |||||
| fulfill(response); | fulfill(response); | ||||
| }, reject); | }, reject); | ||||
| }); | }); |