이벤트이 이상한 대기 시간의 가능한 원인에 대해 답변을 드릴 수는 없지만이를 줄이는 방법을 알고 있습니다.
우리는 event.respondWith()를 사용하여 서비스 작업자의 패치 이벤트를 인터셉트 할 수 있습니다. 어떻게 든 내 경우에는 내 페이지에서 내 서비스 작업자 기본값이 스크립트 태그를 통해 공급 업체의 자바 스크립트를로드하여 캐시 후 네트워크 (자산의 경우) 또는 네트워크 전용 (데이터 페치의 경우)을 수행하는 모든 가져 오기 이벤트를 가로 챌 필요가있는 경우 :
if (shouldLoadOfflinePage) {
fetchEvent.respondWith(cacheManager.fromCache(new Request(offlinePage)));
} else if (shouldFromCache) {
fetchEvent.respondWith(cacheManager.fromCache(fetchEvent.request));
} else {
fetchEvent.respondWith(fetch(fetchEvent.request));
}
마지막 블록은 수행이 거의 필요없는 네트워크 전용 요청을 차단합니다. 이 불필요한 블록은 어떻게 든 차단 부하가 발생합니다 (하지만 난 어떤 블록을 모르는) :
long request to serviceworker wait time: ~400ms
그래서 내가 (마지막 블록을 제거하여 물론) 불필요한 가져-차단을 차단하지 않기로 결정 :
if (shouldLoadOfflinePage) {
fetchEvent.respondWith(cacheManager.fromCache(new Request(offlinePage)));
} else if (shouldFromCache) {
fetchEvent.respondWith(cacheManager.fromCache(fetchEvent.request));
}
내 페이지는 위의 파일을로드하는 데 16ms 만 필요합니다.
희망이 도움이 될 것입니다.
상당한 양의 콘텐츠가 캐시 되었습니까? – abraham
나는 그렇게 말하지 않을 것이다. 한 응용 프로그램에는 6 개의 항목이 있고 다른 14 개의 항목이 있습니다. 나는 또한 이미지를 검색 할 때 [ifixit app] (https://ifixit-pwa.appspot.com/)에서 같은 것을 발견했지만 이제는 그것을 복제 할 수 없습니다. –
Chrome의 버그이거나 컴퓨터의 성능 제약이라고 생각합니다. – abraham