얼마전까지 ajax하면 JQuery만 떠올리던 자신을 반성하며 작성하게 되었습니다 ㅠ.ㅠ
[ Web Worker ]
- web worker를 사용하면 javascript에서도 병렬처리가 가능해집니다.
- 다만, 제약이 있는데 그 중 하나가
web worker는 main thread의 global인 window를 참조하지 않고
WorkerGlobalScope라는 global을 별도로 가지기 때문에,
window의 메서드나, DOM 조작이 불가하다는 점 입니다.
- worker thread는 위와 같은 이유로 DOM 에 접근하기 위해서는
반드시 worker thread 에서 main thread 에 Message System 로 데이터를 전달해야 합니다.
- Worker Thread 내에서 Error 가 발생하면, Main Thread 까지 전파되지 않습니다.
단, onerror 메서드를 이용하여 ErrorEvent 를 수신할 수 있습니다.
- web worker의 종류
1. dedicated worker
: new Worker 로 생성한 worker, 부모 자식간의 thread 에서만 메세지 전달이 가능합니다.
2. shared worker
: 다른 컨텍스트에서 교류가 가능합니다.
SharedWorkerGlobalScope 를 가지고, port를 이용해서 공유가 가능합니다.
1. 장점
- 서버의 처리가 완료될 때까지 기다리지 않고 처리가 가능하기 때문에,
웹페이지의 속도가 향상됩니다.
- 서버에서 Data만 전송하면 되므로 전체적인 코딩의 양 자체도 줄어들 수 있습니다.
2. AJAX의 단점![](https://velog.velcdn.com/images%2Fyseonjin%2Fpost%2F5ec1fbe0-92f3-496d-ad7c-37f58b64118f%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-19%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.40.48.png)
- 히스토리 관리가 되지 않습니다.
이와 이어지는 맥락으로 페이지 이동없는 통신으로 인한 보안상의 문제가 있을 수 있습니다.
- 연속으로 데이터를 요청하면 서버 부하가 증가할 가능성이 있습니다.
- XMLHttpRequest를 통해 통신하는 경우, 사용자에게 아무런 진행 정보가 주어지지 않게됩니다.
따라서, 요청이 완료되지 않았는데 사용자가 페이지를 떠나거나 오작동할 우려가 있습니다.
- AJAX는 모든 브라우저에 유연하지 않습니다.
때문에 지원하지 않는 브라우저에 대한 문제 이슈가 있습니다.
- HTTP 클라이언트의 기능과 지원하는 Charset이 한정되어 있습니다.
- CORS 에러 발생 가능성이 있습니다.