|
const CACHE_NAME = 'my-cache-v1'; |
|
const OFFLINE_URLS = [ |
|
'/', |
|
'/index.html', |
|
|
|
]; |
|
|
|
|
|
self.addEventListener('install', event => { |
|
event.waitUntil( |
|
caches.open(CACHE_NAME).then(cache => { |
|
return cache.addAll(OFFLINE_URLS); |
|
}) |
|
); |
|
self.skipWaiting(); |
|
}); |
|
|
|
|
|
self.addEventListener('activate', event => { |
|
event.waitUntil( |
|
caches.keys().then(keys => |
|
Promise.all( |
|
keys.map(key => { |
|
if (key !== CACHE_NAME) { |
|
return caches.delete(key); |
|
} |
|
}) |
|
) |
|
) |
|
); |
|
self.clients.claim(); |
|
}); |
|
|
|
|
|
self.addEventListener('fetch', event => { |
|
event.respondWith( |
|
fetch(event.request) |
|
.then(response => { |
|
|
|
const responseClone = response.clone(); |
|
caches.open(CACHE_NAME).then(cache => { |
|
cache.put(event.request, responseClone); |
|
}); |
|
return response; |
|
}) |
|
.catch(() => { |
|
|
|
return caches.match(event.request); |
|
}) |
|
); |
|
}); |
|
|