Spaces:
Running
Running
| const CACHE_NAME = 'shangpin-pwa-v1'; | |
| const CORE_ASSETS = [ | |
| './', | |
| './index.html', | |
| './manifest.webmanifest', | |
| './icons/icon.svg' | |
| ]; | |
| self.addEventListener('install', (event) => { | |
| event.waitUntil( | |
| caches.open(CACHE_NAME).then((cache) => cache.addAll(CORE_ASSETS)) | |
| ); | |
| self.skipWaiting(); | |
| }); | |
| self.addEventListener('activate', (event) => { | |
| event.waitUntil( | |
| caches.keys().then((keys) => | |
| Promise.all( | |
| keys | |
| .filter((key) => key !== CACHE_NAME) | |
| .map((key) => caches.delete(key)) | |
| ) | |
| ) | |
| ); | |
| self.clients.claim(); | |
| }); | |
| self.addEventListener('fetch', (event) => { | |
| const { request } = event; | |
| if (request.method !== 'GET') return; | |
| event.respondWith( | |
| caches.match(request).then((cached) => { | |
| if (cached) return cached; | |
| return fetch(request) | |
| .then((networkResponse) => { | |
| if (request.url.startsWith(self.location.origin) && networkResponse && networkResponse.status === 200) { | |
| const responseClone = networkResponse.clone(); | |
| caches.open(CACHE_NAME).then((cache) => cache.put(request, responseClone)); | |
| } | |
| return networkResponse; | |
| }) | |
| .catch(() => caches.match('./index.html')); | |
| }) | |
| ); | |
| }); | |