FE
Web Worker
이진지니지니진
2025. 4. 29. 14:31
자바스크립트는 브라우저에서 싱글 스레드로 동작합니다.
웹 워커는 브라우저가 제공하는 Web API 중 하나로, 별도의 스레드를 만들어 자바스크립트 코드를 병렬로 실행할 수 있도록 지원합니다.
브라우저는 기본적으로 싱글 스레드 환경이기 때문에, 무거운 연산을 메인 스레드에서 처리하면 화면이 멈추거나 버벅거림이 발생할 수 있습니다.
이때 웹 워커를 사용하면 무거운 작업을 별도의 스레드에서 수행하여 UI 반응성과 사용자 경험을 지킬 수 있습니다.
worker와 메인스레드는 메시지 를 서로 주고받을 수 있다.
Web Worker의 종류
- Dedicated Worker
한 페이지 안에서 무거운 연산을 분리하고 싶을 때 사용
1) 대량 데이터 가공
2) 이미지/비디오 변환
3) 복잡한 알고리즘 처리
| 스레드와 워커가 1:1 연결되는 구조
- Shared Worker
여러 페이지나 탭(같은 origin), iframe 간에 데이터를 공유하고 싶을 때 사용
1) 여러 탭에서 채팅방 공유
2) 여러 탭에서 동일한 세션 관리
3) 탭 간 실시간 동기화 (예: 여러 창이 열려있을 때 상태 동기화)
| 여러 페이지가 1:N 연결되어 워커를 공유
* 브라우저에 따 제한이 있을 수 있음
(사파리도 최근 버전부터 지원했다고 함)