芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/public_html/teafund.pulsehost.co.uk/service-worker.js
/* Tea Fund PWA service worker */ const VERSION = 'v202508121044'; const CORE = [ '/', '/offline.html', '/manifest.webmanifest', '/assets/icons/favicon.ico', '/assets/icons/favicon-16.png', '/assets/icons/favicon-32.png', '/assets/icons/apple-touch-icon.png', '/assets/icons/icon-192.png', '/assets/icons/icon-512.png' ]; self.addEventListener('install', event => { event.waitUntil(caches.open(VERSION).then(cache => cache.addAll(CORE))); self.skipWaiting(); }); self.addEventListener('activate', event => { event.waitUntil(caches.keys().then(keys => Promise.all(keys.filter(k => k !== VERSION).map(k => caches.delete(k))))); self.clients.claim(); }); self.addEventListener('fetch', event => { const req = event.request; const url = new URL(req.url); // Navigation requests: network-first with offline fallback if (req.mode === 'navigate') { event.respondWith((async () => { try { const fresh = await fetch(req); const cache = await caches.open(VERSION); cache.put(req, fresh.clone()); return fresh; } catch (e) { const cache = await caches.open(VERSION); const cached = await cache.match(req); return cached || cache.match('/offline.html'); } })()); return; } // Static assets: cache-first if (CORE.includes(url.pathname)) { event.respondWith(caches.match(req).then(c => c || fetch(req))); } });