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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| const CACHE_NAME = 'ai-chat-v1';
const urlsToCache = [ '/', '/index.html', '/css/style.css', '/css/settings-panel.css', '/css/upload-file.css', '/js/script.js', '/js/settings-panel.js', '/js/history-manager.js', '/js/prompts-config.js', '/js/model-descriptions.js', '/js/api-config.js', '/js/auth.js', '/favicon.ico', 'https://cdn.jsdelivr.net/npm/marked/marked.min.js', 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.8.0/build/highlight.min.js' ];
self.addEventListener('install', event => { event.waitUntil( caches.open(CACHE_NAME) .then(cache => { console.log('缓存已打开'); return cache.addAll(urlsToCache); }) .then(() => self.skipWaiting()) ); });
self.addEventListener('activate', event => { event.waitUntil( caches.keys().then(cacheNames => { return Promise.all( cacheNames.map(cacheName => { if (cacheName !== CACHE_NAME) { console.log('删除旧缓存:', cacheName); return caches.delete(cacheName); } }) ); }).then(() => self.clients.claim()) ); });
self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request) .then(response => { if (response) { return response; }
const fetchRequest = event.request.clone();
return fetch(fetchRequest).then( response => { if(!response || response.status !== 200 || response.type !== 'basic') { return response; }
const responseToCache = response.clone();
caches.open(CACHE_NAME) .then(cache => { if (event.request.method === 'GET') { cache.put(event.request, responseToCache); } });
return response; } ).catch(error => { console.log('Fetch failed; returning offline page instead.', error); }); }) ); });
|