Programing

서비스 워커를 어떻게 제거합니까?

lottogame 2020. 7. 9. 08:22
반응형

서비스 워커를 어떻게 제거합니까?


/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 개발자 도구통해이 작업을 수행 할 수 있습니다 .

  1. 다음을 입력하여 실행중인 모든 인스턴스 또는 서비스 워커 찾기

    chrome : // serviceworker-internals /

    새 탭에서 등록을 취소 할 서비스 작업자를 선택하십시오.

  2. 개발자 도구 (F12)를 열고 응용 프로그램을 선택하십시오. 그런 다음

    스토리지 지우기-> 서비스 작업자 등록 취소를 선택하십시오.

    또는

    서비스 워커 선택-> 다시로드시 업데이트 선택

  3. 프로그래밍 방식으로

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


Chrome에서는 개발자 도구 (F12)-> 응용 프로그램-> 서비스 작업자로 이동 하여 해당 특정 도메인의 목록에서 서비스 작업자등록 취소 할 수 있습니다.

스크린 샷

이 방법은 사이트의 개발 모드에서 효과적이며 대부분 실행되며 localhost다른 프로젝트 개발에 필요할 수 있습니다.


장치에서 두 개의 API ( getRegistrationsgetRegistration)를 감지해야합니다 . 서비스 작업자에게는 모든 플랫폼에 고유 한 API 세트가 없습니다. 예를 들어 일부 브라우저에는 navigator.serviceWorker.getRegistration, no 만 있습니다 navigator.serviceWorker.getRegistrations. 따라서 두 가지를 모두 고려해야합니다.


참고로, MacOS Safari 브라우저를 사용 하는 경우 서비스 워커를 강제로 등록 해제하는 방법이 있습니다 (Safari 12.1의 단계 및 이미지).

  1. Safari> 기본 설정 ...> 개인 정보 보호> 웹 사이트 데이터 관리… 사파리 기본 설정 : 개인 정보

  2. 도메인 이름 (예 : 'localhost')을 입력하고 "제거"를 클릭하십시오 Safari 환경 설정 : 개인 정보 : 웹 사이트 데이터 관리

참고 : 서비스 워커 외에도이 도메인의 모든 캐시, 쿠키 및 데이터베이스가 지워집니다.


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

반응형