Здесь вам понадобится этот обработчик выборки:
self.addEventListener('fetch', function(event) {
event.respondWith(
fetch(event.request).catch(function() {
return caches.match(event.request);
})
);
});
Вы отвечаете запросом. Если эта выборка не удалась из-за отсутствия сетевого подключения, вы попадаете в оператор .catch()
и загружаете кешированную версию
, я бы предложил использовать устаревшую при повторной проверке
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.open('mysite-dynamic').then(function(cache) {
return cache.match(event.request).then(function(response) {
var fetchPromise = fetch(event.request).then(function(networkResponse) {
cache.put(event.request, networkResponse.clone());
return networkResponse;
})
return response || fetchPromise;
})
})
);
});
Если вы сделать запрос на загрузку ответа из кеша. В фоновом режиме вы делаете запрос в сеть и сохраняете этот ответ в кеш. Если вы обновите sh страницу, вы увидите ответ с прошлого раза.
Вот хорошая статья о PWA
https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook#stale-while-revalidate