wu1-calculator/sw.js
2022-06-07 14:53:17 +00:00

61 lines
1.7 KiB
JavaScript

/**
* Från
* https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Offline_Service_workers (2021-06-09)
* https://web.dev/offline-cookbook/
*/
const cacheKey = 'cache-v1';
const cacheArray = [
'/index.html',
'/manifest.json',
'/favicon.ico',
'/icons/icon-72x72.png',
'/icons/icon-96x96.png',
'/icons/icon-128x128.png',
'/icons/icon-144x144.png',
'/icons/icon-152x152.png',
'/icons/icon-180x180.png',
'/icons/icon-192x192.png',
'/icons/icon-32x32.png',
'/icons/icon-48x48.png',
'/icons/icon-512x512.png',
'/css/style.css',
'/js/script.js'
];
self.addEventListener('install', event => {
console.log('Attempting to install service worker and cache static assets');
event.waitUntil(
caches.open(cacheKey)
.then(cache => {
return cache.addAll(cacheArray);
})
);
});
/** Rensar cache */
self.addEventListener('activate', (e) => {
e.waitUntil(caches.keys().then((keyList) => {
return Promise.all(keyList.map((key) => {
if (key === cacheKey) { return; }
return caches.delete(key);
}))
}));
});
/** cache-filer först, upddaterar cache från servern */
self.addEventListener('fetch', function (event) {
if (!(event.request.url.indexOf('http') === 0)) return;
event.respondWith(
caches.open(cacheKey).then(function (cache) {
return cache.match(event.request).then(function (response) {
var fetchPromise = fetch(event.request).then(function (networkResponse) {
cache.put(event.request, networkResponse.clone());
return networkResponse;
});
return response || fetchPromise;
});
}),
);
});