Как очистить кеш сервисного работника?

Итак, у меня есть HTML-страница с сотрудником службы, рабочий службы кэширует index.html и мои JS-файлы.

Проблема в том, что когда я меняю JS, это изменение не отображается непосредственно в браузере клиента. Конечно, в hrome dev-tools я могу отключить кеш. Но в chrome mobile, как мне это сделать?

Я попытался получить доступ к настройкам сайта и нажал кнопку CLEAR% RESET. Но он все еще загружает старую страницу / загрузку из кеша. Я пытался использовать другой браузер или хром incognito, и он загружает новую страницу.

Затем я пытаюсь очистить данные браузера (только кеш), и он работает.

Наверное, это не так, как должно работать правильно? мой пользователь не будет знать, обновляется ли страница, не очищая кеш браузера Chrome.

    Используйте это для удаления устаревших кешей:

    self.addEventListener('activate', function(event) { event.waitUntil( caches.keys().then(function(cacheNames) { return Promise.all( cacheNames.filter(function(cacheName) { // Return true if you want to remove this cache, // but remember that caches are shared across // the whole origin }).map(function(cacheName) { return caches.delete(cacheName); }) ); }) ); }); 

    Если вы знаете имя кеша, вы можете просто вызвать caches.delete() из любого места, которое вам нравится в рабочем месте:

     caches.delete(/*name*/); 

    И если вы хотите стереть все кеши (и не ждать их, скажем, это фоновая задача), вам нужно только добавить это :

     caches.keys().then(function(names) { for (let name of names) caches.delete(name); }); 

    Как правило, вы обновляете CACHE_NAME в JS-файле своих рабочих работников, чтобы ваш рабочий снова установил:

     self.addEventListener('install', evt => { evt.waitUntil( caches.open(CACHE_NAME).then(cache => cache.addAll(inputs)) ) }) 

    Кроме того, чтобы очистить кеш для PWA:

     self.caches.keys().then(keys => { keys.forEach(key => console.log(key)) }) 

    для enums имен ключей кеша, затем выполните:

     self.caches.delete('my-site-cache') 

    для удаления ключа кэша по имени (то есть, кэш-сайт my-site). Затем обновите страницу.

    Если после обновления вы видите ошибки, связанные с работой, на консоли, вам также может потребоваться отменить регистрацию зарегистрированных пользователей:

     navigator.serviceWorker.getRegistrations() .then(registrations => { registrations.forEach(registration => { registration.unregister() }) }) 

    Я не убежден, что все это будет соответствовать спецификации.