Я хочу, чтобы мое приложение Angularjs (1.x) использовало автономную версию в качестве запасного варианта в случае отсутствия сети или отсутствия интернет-службы.
Я хочу, чтобы прослушиватель события получения работника службы пытался получитьглавную страницу из сети (когда request.mode == 'navigate') и верните кэшированную версию, если она потерпит неудачу.
По какой-то причине, хотя я отключил Wi-Fi или запустил "самолет"mode " fetch всегда возвращает StatusCode 200 OK . Но это действительно работает, если я включаю Chrome DevTools в режиме «Сеть> офлайн»
... Что я пробовал:
Я пытался определить офлайн-режим с помощью «навигатора». onLine », но не является надежным.
Также пытался очистить кеш, но ничего ... по-прежнему возвращает исходный "онлайн" HTML-документ ..
Также пытался передать "контроль кеша: no-store, no-cache""заголовок для выборки, с тем же результатом ..
self.addEventListener('fetch', function (event) {
if (event.request.mode === 'navigate') {
event.respondWith(homeNetworkThenCache(event.request));
}
});
function homeNetworkThenCache(request){
return fetch(request)
.then(e => e)
.catch(() => caches.match(offlineHomepageUrl));
}
Ожидаемое поведение:
Если нет подключения к Интернету, я ожидаю, что выборка войдет в блок" catch ", но это всегдавводит ".then (e => e)" ...
.. есть идеи, пожалуйста?