Performance: Service workers
Service workers affect page load speed by enabling offline caching and background resource fetching, improving repeat visit performance and responsiveness.
self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request).then(cachedResponse => { return cachedResponse || fetch(event.request); }) ); });
self.addEventListener('fetch', event => { event.respondWith(fetch(event.request)); });
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| No caching in service worker | None | 0 | Network delays increase paint time | [X] Bad |
| Cache-first strategy in service worker | None | 0 | Faster paint due to cached resources | [OK] Good |
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(() => console.log('Registered'))
.catch(err => console.error('Failed', err));
} else {
console.log('No support');
}if (navigator.serviceWorker) {
navigator.serviceWorker.register('/sw.js')
.then(() => console.log('Registered'))
.catch(err => console.error('Failed', err));
}Pass the test and this pattern moves unknown