웹 작업자가 할 수 없는 서비스 작업자가 할 수 있는 일은 무엇입니까?
웹 작업자가 할 수 없는 서비스 작업자가 할 수 있는 일은 무엇입니까?아니면 그 반대?
웹 작업자는 서비스 작업자의 기능의 하위 집합인 것 같습니다.이거 맞는건가요?
Booksy의 대답은 옳지만 제 생각에는 원래 질문에 답하지 않습니다. 즉, "웹 작업자가 할 수 없는 서비스 작업자가 할 수 있는 일은 무엇입니까? 아니면 그 반대?"
라이프사이클과 오리진당 인스턴스 수에는 근본적인 차이가 있습니다.간단히 말해서:
| Web Workers | Service Workers |
|--------------|--------------|------------------|
| Instances | Many per tab | One for all tabs |
| Lifespan | Same as tab | Independent |
| Intended use | Parallelism | Offline support |
북시의 대답은 기본적으로 표의 마지막 줄입니다.신용:이 표는 놀런 로슨의 웹 노동자와 서비스 노동자의 정체성을 설명하는 슬라이드 35부터 시작합니다.
특히 웹 작업자를 생성하고 종료하는 방법은 다음과 같습니다.
서비스 근로자는 자신의 라이프사이클을 가지고 있으며, 이는 인정할 수 있는 "가장 복잡한 부분"입니다.
따라서 라이프사이클은 둘 사이의 근본적인 차이입니다(의도된 사용의 결과).
이전에는 브라우저 지원에 큰 차이가 있었습니다. iOS용 Safari에서는 11.3(2018년 3월 29일)까지 서비스 직원을 전혀 사용할 수 없었습니다. 자세한 내용은 서비스 직원을 사용할 수 있습니까?대조적으로 웹 작업자는 이미 2012년에 훨씬 더 나은 브라우저 지원을 받았습니다. 웹 작업자를 사용할 수 있습니까?
IE11을 지원해야 하는 경우 웹 작업자만 사용할 수 있습니다. IE11에는 서비스 작업자가 없으며 IE11에 대한 지원이 2025년 10월 14일까지 종료됩니다.
브라우저마다 API 지원에 미묘한 차이가 있습니다. HTML5 Worker Test(Nolan Lawson의 HTML5 Worker Test)를 참조하십시오.특정 브라우저에서 한 종류의 작업자는 특정 API 호출을 지원하는 반면 다른 종류의 작업자는 지원하지 않습니다.해당 페이지를 방문하여 자신의 브라우저를 테스트해 보십시오!
이 제품들의 용도에는 큰 차이가 있습니다.
웹 작업자
Web Workers는 웹 콘텐츠가 백그라운드 스레드에서 스크립트를 실행할 수 있는 간단한 수단을 제공합니다.작업자 스레드는 사용자 인터페이스를 방해하지 않고 작업을 수행할 수 있습니다.또한 XMLHttpRequest를 사용하여 I/O를 수행할 수 있습니다(응답 X).ML 및 채널 속성은 항상 null입니다.생성된 작업자는 해당 코드로 지정된 이벤트 핸들러에 메시지를 게시하여 해당 코드를 생성한 JavaScript 코드로 메시지를 보낼 수 있습니다(그 반대의 경우도 마찬가지입니다.
서비스 작업자
서비스 작업자는 기본적으로 웹 애플리케이션과 브라우저 및 네트워크 사이에 위치하는 프록시 서버 역할을 합니다(사용 가능한 경우).이는 무엇보다도 효과적인 오프라인 경험을 만들고, 네트워크 요청을 가로채고, 네트워크를 사용할 수 있는지 여부와 업데이트된 자산이 서버에 있는지 여부에 따라 적절한 조치를 취할 수 있도록 하기 위한 것입니다.또한 푸시 알림 및 백그라운드 동기화 API에 액세스할 수 있습니다.
따라서 웹 작업자는 사용자 인터페이스를 정지시키지 않고 값비싼 스크립트를 실행할 수 있으며, 서비스 작업자는 네트워크 요청(예: 오프라인 앱 구축)에서 응답을 수정하는 데 유용합니다.
서비스 근로자
서비스 작업자는 브라우저와 네트워크 간의 프록시입니다.문서에서 요청을 가로채면 서비스 작업자는 요청을 캐시로 리디렉션하여 오프라인 액세스를 활성화할 수 있습니다.
/* main.js */
navigator.serviceWorker.register('/service-worker.js');
/* service-worker.js */
// Install
self.addEventListener('install', function(event) {
// ...
});
// Activate
self.addEventListener('activate', function(event) {
// ...
});
// Listen for network requests from the main document
self.addEventListener('fetch', function(event) {
// ...
});
웹 워커
웹 워커는 메인 스레드에서 프로세서 집약적인 작업을 오프로드할 수 있는 범용 스크립트입니다.
/* main.js */
// Create worker
const myWorker = new Worker('worker.js');
// Send message to worker
myWorker.postMessage('Hello!');
// Receive message from worker
myWorker.onmessage = function(e) {
console.log(e.data);
}
원본 게시물 여기
언급URL : https://stackoverflow.com/questions/38632723/what-can-service-workers-do-that-web-workers-cannot
'code' 카테고리의 다른 글
JavaScript를 사용하여 브라우저 언어를 가져오는 방법 (0) | 2023.07.27 |
---|---|
C#에서 가변 문자열과 불변 문자열의 차이점은 무엇입니까? (0) | 2023.07.27 |
하이픈/대시를 사용한 MariaDB 전체 텍스트 검색 (0) | 2023.07.27 |
ASC가 아닌 것을 제거하려면 어떻게 해야 합니까?II 문자는 마침표와 공백을 남깁니다. (0) | 2023.07.22 |
파이썬에서 좋은 __hash__ 함수를 구현하는 방법 (0) | 2023.07.22 |