Подтвердить что ты не робот

Как удалить Service Worker?

После удаления /serviceworker.js из моего корневого каталога Chrome по-прежнему запускает сервис-работника, который я удалил из своего веб-сайта. Как удалить рабочий сервис с моего сайта и Chrome, чтобы я мог вернуться на мой сайт?

Я отследил проблему до механизма кэширования Service Work, и я просто хочу удалить ее до тех пор, пока у меня не будет времени для ее отладки. Вход script, который я использую для перенаправления на серверы Google, для входа в свою учетную запись Google. Но все, что я получаю с страницы login.php, - это сообщение ERR_FAILED.

4b9b3361

Ответ 1

Вы можете программным образом удалить сервис-работников следующим образом:

navigator.serviceWorker.getRegistrations().then(function(registrations) {
 for(let registration of registrations) {
  registration.unregister()
} })

Документы: getRegistrations, unregister

Вы также можете удалить сервис-работников на вкладке "Приложение" в Chrome Devtools.

Ответ 2

Вы также можете перейти к URL-адресу: chrome://serviceworker-internals/ и отменить регистрацию серьевого справочника оттуда.

Ответ 3

Это можно сделать с помощью Chrome Developer Tool, а также программно.

  1. Найдите все работающие экземпляры или работника службы, набрав

    chrome://serviceworker-internals/

    на новой вкладке, а затем выберите сервис-работника, которого вы хотите отменить.

  2. Откройте Инструменты разработчика (F12) и выберите Приложение. Тогда либо

    Select Clear Storage → Unregister service worker

    или

    Выберите Service Workers → Выберите Обновить при перезагрузке

  3. Программно

if(window.navigator && navigator.serviceWorker) {
  navigator.serviceWorker.getRegistrations()
  .then(function(registrations) {
    for(let registration of registrations) {
      registration.unregister();
    }
  });
}

Ответ 4

В Google Chrome вы можете перейти к инструментам разработчика (F12) → Application → Service worker и отменить регистрацию рабочих служб из списка для этого конкретного домена.

Снимок экрана

Этот метод эффективен в режиме разработки сайта и в основном работает на localhost, который вам может понадобиться для разработки других проектов.

Ответ 5

Вы должны обнаружить два API на своих устройствах: getRegistrations и getRegistration. Сервис-работник не имеет уникального набора API на всех платформах. Например, в некоторых браузерах есть только navigator.serviceWorker.getRegistration, но не navigator.serviceWorker.getRegistrations. Таким образом, вы должны рассмотреть с обоими.

Ответ 6

К вашему сведению, если вы используете браузер MacOS Safari, есть один способ принудительной отмены регистрации работника сервиса (шаги и изображения для Safari 12.1):

  1. Safari> Настройки...> Конфиденциальность> Управление данными сайта… Safari Preferences : Privacy

  2. Введите доменное имя (например, "localhost"), нажмите "Удалить" Safari Preferences : Privacy : manage website data

Примечание. В дополнение к работникам служб это также приведет к удалению всех кэшей, файлов cookie и баз данных для этого домена.

Ответ 7

В дополнение к уже правильным ответам, если вы хотите также удалить кэш SW, вы можете использовать:

if ('caches' in window) {
    caches.keys()
      .then(function(keyList) {
          return Promise.all(keyList.map(function(key) {
              return caches.delete(key);
          }));
      })
}

Вы можете прочитать больше здесь (пункт: "Отменить регистрацию сервисного работника")

Или через браузер, открыв раздел "Кэш-память", и нажмите кнопку "Очистить данные сайта":

enter image description here

Ответ 8

безопасно удалить Service Worker

if ('serviceWorker' in navigator) {
      navigator.serviceWorker.getRegistrations().then(function (registrations) {
        for (const registration of registrations) {
          // unregister service worker
          console.log('serviceWorker unregistered');
          registration.unregister();
        }
      });
    }