Как удалить Service Worker?
После удаления /serviceworker.js
из моего корневого каталога Chrome по-прежнему запускает сервис-работника, который я удалил из своего веб-сайта. Как удалить рабочий сервис с моего сайта и Chrome, чтобы я мог вернуться на мой сайт?
Я отследил проблему до механизма кэширования Service Work, и я просто хочу удалить ее до тех пор, пока у меня не будет времени для ее отладки. Вход script, который я использую для перенаправления на серверы Google, для входа в свою учетную запись Google. Но все, что я получаю с страницы login.php, - это сообщение ERR_FAILED
.
Ответы
Ответ 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, а также программно.
Найдите все работающие экземпляры или работника службы, набрав
chrome://serviceworker-internals/
на новой вкладке, а затем выберите сервис-работника, которого вы хотите отменить.
Откройте Инструменты разработчика (F12) и выберите Приложение. Тогда либо
Select Clear Storage → Unregister service worker
или
Выберите Service Workers → Выберите Обновить при перезагрузке
Программно
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):
-
Safari> Настройки...> Конфиденциальность> Управление данными сайта… ![Safari Preferences : Privacy]()
-
Введите доменное имя (например, "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();
}
});
}