Ответ
Плюсы:
- Офлайн-доступ: приложение работает без интернета
- Ускорение загрузки: ресурсы берутся из кэша, а не с сервера
- Контроль над кэшированием: можно гибко настраивать стратегии (Cache First, Network First и др.)
- Уменьшение нагрузки на сервер
Минусы:
- Сложность отладки: проблемы с устаревшим кэшем
- Требуется ручное обновление кэша через
self.skipWaiting()иclients.claim() - Дополнительный код для обработки ошибок и fallback-страниц
- Может занимать место на устройстве пользователя
Пример регистрации:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(reg => console.log('SW registered'))
.catch(err => console.error('SW failed:', err));
}