code

웹 작업자가 할 수 없는 서비스 작업자가 할 수 있는 일은 무엇입니까?

starcafe 2023. 7. 27. 22:08
반응형

웹 작업자가 할 수 없는 서비스 작업자가 할 수 있는 일은 무엇입니까?

웹 작업자가 할 수 없는 서비스 작업자가 할 수 있는 일은 무엇입니까?아니면 그 반대?

웹 작업자는 서비스 작업자의 기능의 하위 집합인 것 같습니다.이거 맞는건가요?

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에 액세스할 수 있습니다.

소스 - 서비스 작업자 API

따라서 웹 작업자는 사용자 인터페이스를 정지시키지 않고 값비싼 스크립트를 실행할 수 있으며, 서비스 작업자는 네트워크 요청(예: 오프라인 앱 구축)에서 응답을 수정하는 데 유용합니다.

서비스 근로자

enter image description here

서비스 작업자는 브라우저와 네트워크 간의 프록시입니다.문서에서 요청을 가로채면 서비스 작업자는 요청을 캐시로 리디렉션하여 오프라인 액세스를 활성화할 수 있습니다.

/* 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) {
    // ...
});

웹 워커

enter image description here

웹 워커는 메인 스레드에서 프로세서 집약적인 작업을 오프로드할 수 있는 범용 스크립트입니다.

/* 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

반응형