반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- CSS
- vue3
- aws
- ViTE
- api test
- web vital
- typeScript
- 선택자
- svelte
- https
- custom command
- csr
- Testing
- e2e
- TLS
- JavaScript
- import.meta.env
- rendering
- CloudFlare
- QUIC
- vue-cli
- 비동기
- SSR
- devtools
- http3
- msw
- Cypress
- ts error
- caching
- vue
Archives
- Today
- Total
Develop Note by J.S.
[Worker] Web Worker 본문
반응형
Web Worker
- Web Worker는 Service worker와 마찬가지로 브라우저 영역 외 백그라운드 영역에서 별개의 스레드로 동작되는 프로세스 입니다. 기존 Dom의 UI 스레드에 영향을 주지 않기 때문에 오랜 시간이 걸리거나 복잡한 수학계산 영역, 이미지, 애니메이션 등 브라우저의 메인 스레드 하나로 처리하기에 영향을 주는 기능들을 Web Worker에서 동작시킬 수 있습니다.
Web Worker vs Service Worker
- Service worker의 주 기능으로 네트워크 프록시 역할을 수행하여 Fetch와 같은 api 요청을 가로채서 커스텀한 Handling을 할 수 있습니다. 또한 브라우저가 닫히더라도 백그라운드에 남아 있기 때문에 PWA(Progressive Web App)의 Push 알림 등의 기능을 지원합니다.
- Web Worker는 브라우저의 탭 개별적인 Worker를 생성할 수 있으며, 탭 종료 시 해당 탭에서 동작되는 Web Worker가 종료됩니다. Web Worker는 UI Block(기타 연산 실행으로 인한 멈춤현상)이 되지 않도록 구현하고 싶을 때 사용합니다.
Web Worker 사용법
// main.js
import Worker from 'web-worker';
// worker 초기화
const url = new URL('./worker.js', import.meta.url);
// worker instance 생성
const worker = new Worker(url);
// worker로 부터 수신할 eventListener
worker.addEventListener('message', e => {
console.log(e.data) // "hi!"
});
// 메세지 전송
worker.postMessage('hello');
// worker.js
// worker 스레드측 eventListener 등록
addEventListener('message', e => {
//message 동작 정의 (이미지 로딩, 수학연산 등)
if (e.data === 'hello') {
postMessage('hi!');
}
});
참고 사이트
https://blog.rhostem.com/posts/2021-01-03-image-load-by-web-worker
반응형
'FrontEnd > Worker' 카테고리의 다른 글
[Worker] Mock Service Worker (0) | 2023.06.22 |
---|---|
[Worker] Service Worker (0) | 2023.06.21 |