Next.js 애플리케이션에 서비스 워커를 통합하는 방법

Next.js 애플리케이션에 서비스 워커를 통합하는 방법
당신과 같은 독자들이 MUO를 지원하는 데 도움을 줍니다. 귀하가 당사 사이트의 링크를 사용하여 구매하면 당사는 제휴 수수료를 받을 수 있습니다. 자세히 읽어보세요.

서비스 워커는 최신 웹 애플리케이션에 강력한 캐싱 기능과 기타 기능을 제공하기 위해 백그라운드에서 실행되는 스크립트입니다.





이러한 기능은 기본 앱의 원활하고 사용자 친화적인 경험을 웹 브라우저에 제공합니다.





서비스 워커는 PWA(Progressive Web Apps) 생성의 기본 구성 요소입니다.





서비스 워커 이해

서비스 워커는 일종의 JavaScript 웹 작업자 이는 기본 JavaScript 스레드와 별도로 백그라운드에서 실행되므로 차단되지 않습니다. 즉, 애플리케이션의 사용자 인터페이스 또는 사용자와 애플리케이션의 상호 작용이 지연되거나 중단되지 않습니다.

 화면에 코드가 표시된 노트북 디스플레이와 측면에 펜이 달린 펜 홀더가 있습니다.

서비스 워커는 웹 애플리케이션과 네트워크 사이에 위치하는 프록시 서버로 작동합니다. 요청과 응답을 가로채고, 리소스를 캐시하고, 오프라인 지원을 제공할 수 있습니다. 이는 사용자가 온라인 상태가 아닐 때에도 웹 앱이 더욱 원활하고 사용자 친화적인 느낌을 주는 데 도움이 됩니다.



서비스 워커를 위한 주요 애플리케이션

서비스 워커를 위한 다양한 애플리케이션이 있습니다. 여기에는 다음이 포함됩니다.

  • PWA: 서비스 워커는 Progressive Web Apps에 강력한 기능을 제공합니다. 사용자 정의 네트워크 요청, 푸시 알림, 오프라인 지원 및 빠른 로딩을 수행합니다.
  • 캐싱: 서비스 워커는 애플리케이션의 자산(이미지, JavaScript 코드, CSS 파일)을 브라우저의 캐시 저장소에 저장할 수 있습니다. 이를 통해 브라우저는 네트워크를 통해 원격 서버에서 해당 항목을 가져오는 대신 캐시에서 해당 항목을 검색할 수 있습니다. 결과적으로 콘텐츠가 더 빠르게 로드되며 이는 인터넷 연결이 느리거나 불안정한 사용자에게 특히 유용합니다.
  • 백그라운드 동기화: 서비스 워커는 사용자가 애플리케이션과 적극적으로 상호 작용하지 않거나 애플리케이션이 브라우저에 열려 있지 않은 경우에도 데이터를 동기화하고 다른 백그라운드 작업을 실행할 수 있습니다.

Next.js 애플리케이션에 서비스 워커 통합

코드를 살펴보기 전에 서비스 워커의 작동 방식을 이해하는 것이 도움이 됩니다. 서비스 워커를 사용하는 데에는 두 가지 주요 단계가 있습니다. 등록 그리고 활성화 .





첫 번째 단계에서 브라우저는 서비스 워커를 등록합니다. 간단한 예는 다음과 같습니다.

const registerServiceWorker = async () => { 
  if ("serviceWorker" in navigator) {
    registration = await navigator.serviceWorker.register("/sw.js");
  }
};

registerServiceWorker();

코드는 먼저 모든 최신 웹 브라우저가 지원하는 서비스 워커를 브라우저가 지원하는지 확인합니다. 이 지원이 존재하는 경우 지정된 파일 경로에 있는 서비스 워커 등록을 진행합니다.





전화가 사과 로고에 붙어 있습니다.

활성화 단계에서는 서비스 워커를 설치하고 활성화해야 합니다. 설치하다 그리고 활성화하다 사용하는 이벤트 JavaScript 이벤트 리스너 . 이를 달성하는 방법은 다음과 같습니다.

registration.addEventListener("install", () => { 
    console.log("Service worker installed");
});

registration.addEventListener("activate", () => {
    console.log("Service worker activated");
});

등록 프로세스 직후에 이 코드를 포함할 수 있습니다. 서비스 워커 등록 프로세스가 성공한 직후에 실행되어야 합니다.