// добавляем обработчик события "fetch"
self.addEventListener('fetch', e => {
e.respondWith(
fetch(e.request)
.then(res => {
const copyCache = res.clone()
caches.open(CACHE_NAME).then(cache => {
if (!(e.request.url.indexOf('chr') === 0))
cache.put(e.request, copyCache)
})
return res
})
.catch(error => caches.match(e.request).then(res => res))
)
})
// добавляем обработчик события "fetch"
self.addEventListener("fetch", (event) => {
console.log("Fetch событие для", event.request.url);
event.respondWith(
caches
.match(event.request)
.then((response) => {
//Если response найден в кэше
if (response) {
console.log("Найден ", event.request.url, " в кэше");
return response;
}
return fetch(event.request).then((response) => {
// Если response не найден
if (response.status === 404) {
return caches.open(CACHE_NAME).then((cache) => {
return cache.match("404.html");
});
}
// Кэширование и возвращение response если его еще нет в кэше
return caches.open(CACHE_NAME).then((cache) => {
if (!(event.request.url.indexOf('chr') === 0))
cache.put(event.request.url, response.clone());
return response;
});
});
})
.catch(async (error) => {
console.log("Error, ", error);
// Если страница офлайн или нет сети
return caches.open(CACHE_NAME).then((cache) => {
return cache.match("404.html");
});
})
);
});