sw.js (view raw)
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 |
/* EMOJESIS — minimal offline cache. Bump CACHE on every release. */
'use strict';
var CACHE = 'emojesis-v2';
var ASSETS = [
'./',
'./index.html',
'./css/style.css',
'./js/data.js',
'./js/app.js',
'./favicon.svg',
'./manifest.webmanifest'
];
self.addEventListener('install', function (ev) {
ev.waitUntil(
caches.open(CACHE).then(function (c) { return c.addAll(ASSETS); })
.then(function () { return self.skipWaiting(); })
);
});
self.addEventListener('activate', function (ev) {
ev.waitUntil(
caches.keys().then(function (keys) {
return Promise.all(keys.map(function (k) {
if (k !== CACHE) return caches.delete(k);
}));
}).then(function () { return self.clients.claim(); })
);
});
self.addEventListener('fetch', function (ev) {
if (ev.request.method !== 'GET' || !ev.request.url.startsWith(self.location.origin)) return;
ev.respondWith(
caches.match(ev.request).then(function (hit) {
return hit || fetch(ev.request).then(function (res) {
if (res && res.ok) {
var copy = res.clone();
caches.open(CACHE).then(function (c) { c.put(ev.request, copy); });
}
return res;
});
})
);
});
|