У меня есть прогрессивное веб-приложение, в котором сервис-воркер настроен, как показано ниже. Я следую методу предварительного кэширования. Все файлы будут кэшироваться первыми, а запросы будут обслуживаться из кеша. Если в локальном кеше совпадений нет, то запрос обслуживается по сети. Если ничего не получается, отображается страница офлайн/ошибка. Все работает нормально. Но я застрял в обновлении файла index.html.
const pb_cache = "cv1";
const assets = [
"./manifest.json",
"./index.html",
"./offline.html",
]
self.addEventListener("install", installEvent => {
installEvent.waitUntil(
caches.open(pb_cache)
.then((cache) => {
return cache.addAll(assets)
.then(() => {
return self.skipWaiting(); //To forces the waiting service worker to become the active service worker
})
})
);
});
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response) {
if (response) {
return response;
}
return fetch(event.request).then(function(response) {
if (response.status === 404) {
return caches.match('/offline.html');
}
return response
});
}).catch(function() {
return caches.match('/offline.html');
})
);
});
Сценарий Я установил веб-приложение на свой телефон Android. Все кешируется и работает нормально. Мне нужно внести изменения в файл index.html. Поэтому я добавил несколько настроек в файл и обновил веб-сайт. Но поскольку веб-приложение, установленное в Android, обслуживает локальный кеш, изменение веб-сайта не отражается. Поэтому мне нужен механизм для проверки обновлений. Какой параметр или что я должен проверить на наличие обновлений? Я прочитал много документов, связанных с этим, и я не могу понять содержание.
Одна вещь, которую я знаю, это то, что я должен проверять наличие обновлений где-то в сервис-воркере и добавлять их в кеш, когда они найдены в сети. Я не знаю, какое событие или какие критерии проверять.