2017-10-24 5 views
0

많은 자습서를 읽은 후에 저는 self.skipWaiting()을 사용하여 기존 serviceWorker에 즉시 업데이트를 적용하고 self.clients.claim()을 사용하여 첫 번째로드에서 즉시 제어권을 얻도록했습니다.서비스 작업자에서 self.clients.claim() 및 self.skipWaiting()을 사용하면로드 시간이 늘어날 수 있습니까?

self.addEventListener('install', function(event) { 
    event.waitUntil(self.skipWaiting()); 
}); 
self.addEventListener('activate', function(event) { 
    event.waitUntil(self.clients.claim()); 
}); 

모든 요청에 ​​대해 업데이트를 조회합니까, 아니면 어떻게 내부적으로 작동합니까? self.clients.claim()self.skipWaiting()의 사용은 부하 또는 서비스 작업자 성능에 영향을 미칩니 까?

답변

0

성능 관점에서는 아무런 영향이 없습니다.

self.skipWaiting()self.clients.claim()은 모두 약간의 조치를 취하고 동시에 undefined 값으로 즉시 해결됩니다.

self.skipWaiting()의 경우 취할 조치는 내부 플래그를 뒤집어 서비스 작업자가 정품 인증하려고 시도하는 것입니다. self.clients.claim()의 경우, 모든 클라이언트를 거쳐 현재 실행중인 서비스 작업자가 제어하려고 시도합니다.

두 가지 방법 모두에서 반환되는 실제 약속은 관련이 없으므로 event.waitUntil()에 포장하지 않아도됩니다.하지만 해를 끼치 지 않더라도 서비스 근로자의 사용 사례는 계속해서 많습니다.

또한 코드가 installactivate 청취자 내에서 해당 메서드를 호출하기 때문에 문제의 코드는 서비스 작업자 스레드가 시작되는 대부분의 시간을 실행하지 않습니다 (업데이트 된 서비스가있는 경우에만). 노동자.

+0

고마워요. @ 제프. –

+0

이 코드는 첫 페이지를 새로 고침 할 때 업데이트를 선택할 수 있습니까? –

+0

정확한 의미를 모르십니까? SW 수명주기에 대한 자세한 정보를 원하시면 https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle을 참조하십시오. –