-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathservice-worker.js
More file actions
51 lines (47 loc) · 1.46 KB
/
service-worker.js
File metadata and controls
51 lines (47 loc) · 1.46 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const version = 1.2;
const cacheName = `MyCacheName ${version}`;
const filesToCache = ["offline.html", "assets/images/icon.png", "assets/images/offline.svg", "src/app.js", "src/app.css"];
self.addEventListener("install", (event) => {
event.waitUntil(caches.open(cacheName).then(async (cache) => {
for (const file of filesToCache) {
try {
await cache.add(file);
} catch(e) {
console.error(file, e);
}
}
}));
console.log("Service Worker installed...");
});
self.addEventListener("fetch", (event) => {
console.log(event.request.url, new Date());
event.respondWith(
caches.match(event.request).then((response) => {
if (response) return response;
// Fallback to network and if it fails, return the offline page.
return fetch(event.request).catch((error) => {
console.log('Network error...', error);
console.log('Attempting Offline fallback.');
return caches.open(cacheName).then((cache) => {
return cache.match("offline.html");
});
});
})
);
});
self.addEventListener("activate", (e) => {
console.log("Service Worker: Activate");
e.waitUntil(
caches.keys().then((keyList) => {
return Promise.all(
keyList.map((key) => {
if (key !== cacheName) {
console.log("Service Worker: Removing old cache", key);
return caches.delete(key);
}
})
);
})
);
return self.clients.claim();
});