Вот на гугле есть такой пример
self.addEventListener('fetch', function(event) {
event.respondWith(
fetch(event.request).catch(function() {
return caches.match(event.request);
})
);
});
Но они там говорят
you'll most-likely want to update the cache entry.
Что мол cache-ом сам занимайся. Хотелось бы увидеть пример с кэшем, как я понимаю это должно работать
сервис воркер который будет делать запрос, если за X (400 мс) он
| отвечает - вернуть ответ, и положить в кэш
| не отвечает - проверить если ли он в кеше
| есть в кеше - дать ответ, запрос не прерывать, по завершению положить в кеш
| нет в кеше - продолжает ждать ответ от сервера - когда прийдет вернуть его и положить в кеш