📍참고
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
Service Worker API - Web APIs | MDN
Service workers essentially act as proxy servers that sit between web applications, the browser, and the network (when available). They are intended, among other things, to enable the creation of effective offline experiences, intercept network requests an
developer.mozilla.org
📍서비스 워커?
✅프록시 서버 역할
- 웹앱, 브라우저, 네트워크 사이에서..
✅효과적인 오프라인 경험 생성
- 앱이 오프라인 상태일 때 수행할 기능을 담당
- 네트워크 요청을 가로채서 네트워크 사용 가능 여부에 따라 적절한 행동을 취할 수 있다
- 푸시 알림, 백그라운드 동기화 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. 활성화