확장 서비스 워커 수명 연장

이제 확장 프로그램 서비스 작업자는 이벤트를 수신하는 한 계속 실행될 수 있습니다. 이렇게 하면 연장 서비스 직원의 신뢰성이 높아지지만 피해야 할 함정이 있습니다.

Joe Medley
Joe Medley

Chrome 110 (2023년 2월 7일 현재 베타 버전)부터 확장 프로그램 서비스 워커는 이벤트를 수신하는 한 계속 실행됩니다. 이렇게 하면 이전 확장 프로그램 서비스 워커 구현의 타이밍 문제가 수정됩니다. 새 이벤트가 이벤트 대기열에 있을 때 제한 시간이 발생하고 제한 시간으로 인해 비동기 작업이 잘릴 수 있었습니다. 이 개선사항으로 확장 서비스 작업자의 최대 수명 5분이 삭제되었습니다.

이 도움말에서는 이러한 동작이 어떻게 변경되었는지 설명합니다.

배경

확장 프로그램 서비스 워커는 대부분 웹 서비스 워커처럼 작동하지만 서비스 워커 이벤트 외에도 확장 프로그램 서비스 워커는 확장 프로그램 이벤트도 수신 대기할 수 있습니다. 일반 서비스 워커 이벤트는 서비스 워커의 전체 기간을 연장하지만 110이 출시되기 전에는 몇몇 확장 프로그램 플랫폼 이벤트만 확장 프로그램 서비스 워커를 활성 상태로 유지했습니다.

일반적으로 Chromium은 다음 조건 중 하나가 충족된 후에 서비스 워커를 종료합니다.

  • 서비스 워커가 30초 넘게 이벤트를 수신하지 않았으며 진행 중인 장기 실행 작업이 없습니다. 이 기간에 서비스 워커가 이벤트를 수신하면 유휴 타이머가 삭제되었습니다.
  • 장기 실행 작업이 완료되는 데 5분이 넘게 걸렸으며 지난 30초 동안 이벤트가 수신되지 않았습니다.

유휴 타이머 또는 장기 실행 작업 타이머가 만료되기 전에 수신된 새 서비스 워커 이벤트는 타이머를 재설정하고 서비스 워커의 전체 기간을 연장합니다.

안타깝게도 이 동작은 확장 프로그램 이벤트에 적용되지 않았습니다. 확장 이벤트는 확장 프로그램 서비스 워커를 깨우고 이벤트가 완료될 때까지 이를 유지할 수 있지만 30초의 유휴 타이머는 연장할 수 없습니다. 즉, 브라우저가 확장 프로그램에 새 이벤트를 전달한 직후에도 마지막 확장 프로그램 이벤트가 완료된 후 언제든지 확장 프로그램 서비스 워커가 종료될 수 있습니다.

변경된 내용

Chrome 110부터 모든 이벤트가 유휴 타이머를 재설정하며 대기 중인 이벤트가 있는 경우 유휴 시간 제한이 발생하지 않습니다. 즉, 예기치 않은 중단이 없다고 가정하면 확장 프로그램 서비스 작업자는 이벤트를 적극적으로 처리하는 한 일반적으로 계속 실행됩니다. 또한 chrome.storage.local.get()와 같은 확장 프로그램별 Chrome API를 호출하면 유휴 시간 제한이 재설정됩니다. 특히 다음에 주의해야 합니다.

  • 서비스 워커는 활동이 없으면 30초 후에 종료됩니다. (이벤트를 수신하거나 확장 프로그램 API를 호출하면 이 타이머가 재설정됩니다.)
  • 이벤트나 API 호출과 같은 단일 요청을 처리하는 데 5분이 넘게 걸리면 서비스 워커가 종료됩니다.

네이티브 메시지와 같은 일부 API는 이러한 두 타이머를 모두 취소하는 강력한 연결 유지를 제공합니다.

Google은 장기 실행 작업을 종료하지 않고도 확장 프로그램 서비스 워커가 종료될 수 있도록 계속 노력하고 있습니다. 리소스 의식 확장 프로그램 서비스 작업자는 가능하면 항상 양보해야 합니다. 또한 확장 프로그램은 상태를 유지하여 예상치 못한 종료에 대비해야 합니다. 이렇게 하면 사용자가 브라우저를 강제로 닫는 것과 같은 예기치 않은 이벤트를 방지할 수 있습니다.

사진: UnsplashPaula Guerreiro