📍참고
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
📍서비스 워커?
✅프록시 서버 역할
- 웹앱, 브라우저, 네트워크 사이에서..
✅효과적인 오프라인 경험 생성
- 앱이 오프라인 상태일 때 수행할 기능을 담당
- 네트워크 요청을 가로채서 네트워크 사용 가능 여부에 따라 적절한 행동을 취할 수 있다
- 푸시 알림, 백그라운드 동기화 API에 접근 등
📍DOM에 접근할 수 없다
✅별도의 worker context에서 실행됨
- 글로벌 전역 객체가 다르다
service worker의 globalThis : ServiceWokerGlobalScope
DOM 의 this : window
📍Non-blocking
✅비동기적으로 작동
- 앱을 구동하는 JavaScript와 다른 스레드에서 동작하므로 논블로킹
- 완전히 비동기적이므로 동기적 XHR 객체와 웹 스토리지 사용 불가
- Promise를 적극적으로 사용
📍HTTPS only
✅보안상의 이유로 HTTPS 환경에서만 작동
- 중간자 공격(man in the middle)에 의한 악성 코드 주입에 취약하므로..
- 따라서 파이어폭스에서는 기본값으로 숨겨져 있으며, 프라이빗 브라우징 모드에서는 사용 불가
📍서비스워커 라이프사이
✅과정
1. 다운로드
- 서비스 워커가 제어하는 웹 사이트에 접속하면 다운로드 시작
2. 설치
3. 활성화