var CACHE_NAME = 'trivial-static-image-gallery-v1'; var urlsToCache = [ './', './index.html', './nsfw.html', './index.json', './nsfw.json', './main.css', './main.js', './font-awesome-4.7.0/css/font-awesome.min.css', './font-awesome-4.7.0/fonts/fontawesome-webfont.woff2', './font-awesome-4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0' ]; self.addEventListener('install', event => { // Perform install steps event.waitUntil( caches.open(CACHE_NAME) .then(cache => { console.log('Opened cache'); return cache.addAll(urlsToCache); }) ); }); self.addEventListener('fetch', function (evt) { console.log('The service worker is serving the asset.'); evt.respondWith(fromNetwork(evt.request, 15000).catch(function () { return fromCache(evt.request); })); }); function fromNetwork(request, timeout) { return new Promise(function (fulfill, reject) { var timeoutId = setTimeout(reject, timeout); fetch(request).then(function (response) { clearTimeout(timeoutId); var responseToCache = response.clone(); fulfill(response); caches.open(CACHE_NAME).then(function (cache) { cache.put(request, responseToCache); }); }, reject); }); } function fromCache(request) { return caches.open(CACHE_NAME).then(function (cache) { return cache.match(request).then(function (matching) { return matching || Promise.reject('no-match'); }); }); }