CaiWuXiTong/serviceworker.js

54 lines
1.4 KiB
JavaScript
Vendored

var staticCacheName = "pwa-v2";
var filesToCache = [
'/public/img/pwa/icon-192x192.png',
'/public/img/pwa/icon-512x512.png'
];
// Cache on install
self.addEventListener("install", event => {
event.waitUntil(
caches.open(staticCacheName)
.then(cache => {
return cache.addAll(filesToCache);
})
.then(() => self.skipWaiting())
)
});
// Clear cache on activate
self.addEventListener('activate', event => {
event.waitUntil(
caches.keys().then(cacheNames => {
return Promise.all(
cacheNames
.filter(cacheName => (cacheName.startsWith("pwa-")))
.filter(cacheName => (cacheName !== staticCacheName))
.map(cacheName => caches.delete(cacheName))
);
}).then(() => self.clients.claim())
);
});
// Navigation must prefer the network so cached redirects cannot mask auth state.
self.addEventListener("fetch", event => {
if (event.request.method !== 'GET') {
return;
}
if (event.request.mode === 'navigate') {
event.respondWith(
fetch(event.request)
.catch(() => caches.match(event.request))
);
return;
}
event.respondWith(
caches.match(event.request)
.then(response => {
return response || fetch(event.request);
})
)
});