-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsw_template.js
37 lines (31 loc) · 1.05 KB
/
sw_template.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Based on https://googlechrome.github.io/samples/service-worker/basic/
const version = "$VERSION$";
const currentCacheName = `ELCWEB-${version}`;
const filesToCache = "$FILES_TO_CACHE$"
self.addEventListener('install', event => {
event.waitUntil(
caches.open(currentCacheName)
.then(cache => cache.addAll(filesToCache))
.then(self.skipWaiting())
);
});
self.addEventListener('activate', event => {
event.waitUntil(
caches.keys()
.then(cacheNames => cacheNames.filter(cacheName => ! currentCacheName.includes(cacheName) ))
.then(cachesToDelete => Promise.all(cachesToDelete.map(cacheToDelete => caches.delete(cacheToDelete))))
.then(self.clients.claim())
);
});
self.addEventListener('fetch', event => {
const url = event.request.url;
const scope = self.registration.scope;
if (!url.startsWith(scope)) {
return;
}
event.respondWith(
caches.open(currentCacheName)
.then(cache => cache.match(event.request, {ignoreSearch: true}) )
.then(response => response || fetch(event.request) )
);
});