문제 분류
UI가 멈추는 계산 문제인지, 오프라인과 캐시 문제인지 먼저 나눈다.
둘은 이름만 비슷하고 역할은 다르다Worker를 성능 향상 기술로만 묶으면 실행 위치와 수명 주기 차이가 가려진다. Web Worker는 메인 스레드 밖에서 계산을 하고 structured clone으로 메시지를 주고받으며, Service Worker는 페이지와 네트워크 사이에서 install, activate, fetch, cache 흐름을 가진다.
UI가 멈추는 계산 문제인지, 오프라인과 캐시 문제인지 먼저 나눈다.
둘은 이름만 비슷하고 역할은 다르다긴 계산을 worker로 보내고 postMessage와 message 이벤트로 결과를 받는다.
DOM은 worker에서 직접 만질 수 없다structured clone으로 복사 가능한 값인지, Transferable을 쓸 수 있는지 본다.
큰 데이터 복사는 비용이 된다install에서 캐시 준비, activate에서 이전 캐시 정리, fetch에서 응답 전략을 적용한다.
새 버전이 즉시 제어하지 않을 수 있다네트워크 실패, 오래된 캐시, 업데이트 레이스, skipWaiting 사용 여부를 테스트한다.
오프라인 성공보다 갱신 실패가 더 위험하다