// Регистрация
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}
// sw.js — файл Service Worker
self.addEventListener('install', event => {
event.waitUntil(
caches.open('v1').then(cache =>
cache.addAll(['/index.html', '/app.css', '/app.js'])
)
);
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(cached =>
cached ?? fetch(event.request)
)
);
});
Только HTTPS. Нет прямого доступа к DOM. Собственный цикл жизни (install → activate → fetch).