Может что-то типа этого?
После вызова
self.skipWaiting()
в Service Worker можно отправить сообщение об успешном сбросе кеша обратно в клиентскую часть приложения, используя
postMessage()
. В клиентской части вы можете прослушивать это сообщение и выполнить обновление страницы с помощью
location.reload()
или другого подходящего метода.
// Service Worker
self.addEventListener('message', event => {
if (event.data && event.data.type === 'SKIP_WAITING') {
self.skipWaiting();
event.source.postMessage({ type: 'CACHE_RESET_SUCCESS' });
}
});
// client
navigator.serviceWorker.addEventListener('message', event => {
if (event.data && event.data.type === 'CACHE_RESET_SUCCESS') {
location.reload();
}
});
Либо
Если вы хотите, чтобы клиентская часть обновляла страницу после сброса кеша, вы можете прослушивать событие
controllerchange
на объекте
navigator.serviceWorker
. Когда Service Worker сбрасывается и становится активным контроллером, будет вызвано событие
controllerchange, и вы можете выполнить обновление страницы.
navigator.serviceWorker.addEventListener('controllerchange', () => {
location.reload();
});