서비스 워커를 어떻게 제거합니까?
/serviceworker.js
루트 디렉토리에서 삭제 한 후에도 Chrome은 여전히 웹 루트에서 제거한 서비스 워커를 실행합니다. 웹 사이트 및 Chrome에서 서비스 워커를 제거하여 웹 사이트에 다시 로그인하려면 어떻게해야합니까?
Service Work의 캐시 메커니즘에 대한 문제를 추적했으며 디버깅 할 시간이 될 때까지 지금 제거하고 싶습니다. 내가 사용하는 로그인 스크립트는 Google 서버로 리디렉션되어 Google 계정에 로그인합니다. 그러나 login.php 페이지에서 얻는 것은 ERR_FAILED
메시지입니다.
다음과 같이 프로그래밍 방식으로 서비스 워커를 제거 할 수 있습니다.
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for(let registration of registrations) {
registration.unregister()
} })
문서 : getRegistrations , 등록 해제
Chrome Devtools의 애플리케이션 탭에서 서비스 워커를 제거 할 수도 있습니다.
URL ( chrome : // serviceworker-internals /)로 이동 하여 서비스 작업자를 등록 취소 할 수도 있습니다.
프로그래밍 방식 은 물론 Chrome 개발자 도구 를 통해이 작업을 수행 할 수 있습니다 .
다음을 입력하여 실행중인 모든 인스턴스 또는 서비스 워커 찾기
chrome : // serviceworker-internals /
새 탭에서 등록을 취소 할 서비스 작업자를 선택하십시오.
개발자 도구 (F12)를 열고 응용 프로그램을 선택하십시오. 그런 다음
스토리지 지우기-> 서비스 작업자 등록 취소를 선택하십시오.
또는
서비스 워커 선택-> 다시로드시 업데이트 선택
프로그래밍 방식으로
if(window.navigator && navigator.serviceWorker) {
navigator.serviceWorker.getRegistrations()
.then(function(registrations) {
for(let registration of registrations) {
registration.unregister();
}
});
}
Chrome에서는 개발자 도구 (F12)-> 응용 프로그램-> 서비스 작업자로 이동 하여 해당 특정 도메인의 목록에서 서비스 작업자 를 등록 취소 할 수 있습니다.
이 방법은 사이트의 개발 모드에서 효과적이며 대부분 실행되며 localhost
다른 프로젝트 개발에 필요할 수 있습니다.
장치에서 두 개의 API ( getRegistrations 및 getRegistration)를 감지해야합니다 . 서비스 작업자에게는 모든 플랫폼에 고유 한 API 세트가 없습니다. 예를 들어 일부 브라우저에는 navigator.serviceWorker.getRegistration
, no 만 있습니다 navigator.serviceWorker.getRegistrations
. 따라서 두 가지를 모두 고려해야합니다.
참고로, MacOS Safari 브라우저를 사용 하는 경우 서비스 워커를 강제로 등록 해제하는 방법이 있습니다 (Safari 12.1의 단계 및 이미지).
참고 : 서비스 워커 외에도이 도메인의 모든 캐시, 쿠키 및 데이터베이스가 지워집니다.
SW 캐시를 삭제하려면 이미 주어진 정답 외에도 다음을 사용할 수 있습니다.
if ('caches' in window) {
caches.keys()
.then(function(keyList) {
return Promise.all(keyList.map(function(key) {
return caches.delete(key);
}));
})
}
당신이 읽을 수 있습니다 자세한 내용은 여기 (단락 : "서비스 노동자 등록 취소")
또는 "캐시 스토리지"섹션에 액세스하는 브라우저를 통해 "사이트 데이터 지우기"버튼을 클릭하십시오.
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();
}
});
}
참고 URL : https://stackoverflow.com/questions/33704791/how-do-i-uninstall-a-service-worker
'Programing' 카테고리의 다른 글
null 잘못된 디자인을 반환합니까? (0) | 2020.07.09 |
---|---|
RootViewController 스위치 전환 애니메이션 (0) | 2020.07.09 |
특정 문자 뒤의 문자열 부분 제거 (0) | 2020.07.09 |
Android 스튜디오 오류“지원되지 않는 모듈이 감지되었습니다 : 다음 모듈에 대해 컴파일이 지원되지 않습니다” (0) | 2020.07.09 |
Windows에 mongoDB를 설치하는 방법은 무엇입니까? (0) | 2020.07.09 |