← Назадconst CACHE = 'wb-v2-20260428';
const ASSETS = [
'/weather-bot/',
'/weather-bot/static/css/style.css',
'/weather-bot/static/js/app.js',
];
self.addEventListener('install', e => {
e.waitUntil(caches.open(CACHE).then(c => c.addAll(ASSETS)));
self.skipWaiting();
});
self.addEventListener('activate', e => {
e.waitUntil(
caches.keys().then(keys =>
Promise.all(keys.filter(k => k !== CACHE).map(k => caches.delete(k)))
)
);
self.clients.claim();
});
self.addEventListener('fetch', e => {
// API calls — network only (no cache)
if (e.request.url.includes('/api/')) return;
// Static assets — network first, fall back to cache
e.respondWith(
fetch(e.request)
.then(r => {
const clone = r.clone();
caches.open(CACHE).then(c => c.put(e.request, clone));
return r;
})
.catch(() => caches.match(e.request))
);
});