main thread offload

웹 워커 선택 기준

웹 워커는 DOM 접근 없이 계산을 분리하고, 서비스 워커는 HTTPS 등록 뒤 fetch와 Cache API 사이에서 요청을 제어합니다.

분리 신호
01Long Task 50ms+ 02new Worker() 03structured clone 04fetch cache
Dedicated Worker

큰 계산, 파싱, 압축은 new Worker(url, { type: "module" })로 UI 스레드 밖에 둡니다.

postMessage

복사 비용이 큰 ArrayBuffer는 transfer list로 넘기고, 함수나 DOM 노드는 DataCloneError를 냅니다.

Service Worker

navigator.serviceWorker.register()는 보안 컨텍스트와 scope를 만족해야 fetch 이벤트를 가로챕니다.

install/activate

install 실패, activate 대기, stale cache가 보이면 skipWaiting과 cache version 정리를 점검합니다.