Chrome 확장 프로그램의 영구 서비스 워커: 가이드
Chrome에서는 서비스 워커(SW) 지속성이 기본적으로 지원되지 않습니다. 설계상 SW는 5분 동안 활동이 없으면 언로드되도록 설계되어 있어 지속적으로 실행되는 서비스를 유지하기가 어렵습니다. 이 기사에서는 SW를 계속 실행하고 이벤트에 응답할 수 있는 다양한 해결 방법을 살펴보겠습니다.
알려진 문제 및 제한 사항
-
비활성 및 언로드 타이머: SW에는 30초의 비활성 타이머와 5분의 언로드가 있습니다. 타이머.
-
이벤트 실행 문제: Chrome은 특히 이전 버전에서 모든 webRequest 이벤트에 대해 SW를 일관되게 깨우지 못할 수 있습니다.
-
잦은 이벤트 처리: webRequest 및 webNavigation과 같은 빈번한 이벤트를 처리하면 과도한 SW 재시작이 발생하여 성능에 영향을 미칠 수 있습니다.
-
연속 API 호출: 특정 Chrome API를 연속적으로 호출하면 SW 수명을 연장하는 데 도움이 될 수 있지만 이 접근 방식은 버그 악용으로 간주됩니다.
해결 방법:
버그 악용 (Chrome 110 ):
- 래핑된 chrome.runtime.getPlatformInfo() 호출을 변수에 할당하고 이를 반복적으로 호출하면 SW 실행 시간이 더 길어집니다.
오프스크린 API(Chrome 109 ):
- 30초마다 SW에 메시지를 보내는 오프스크린 문서를 만듭니다. 이 방법은 현재 무제한 수명을 제공하지만 향후 수정될 수 있습니다.
NativeMessaging API(Chrome 105 ):
- SW 연결 NativeMessaging 호스트는 호스트가 충돌하거나 닫힙니다.
WebSocket API(Chrome 116 ):
- WebSocket 연결을 설정하고 25초마다 메시지를 교환하여 비활성을 방지합니다.
Chrome 메시지 API:
- 30초마다 전용 탭에서 SW로 메시지를 보냅니다. 이를 위해서는 광범위한 호스트 권한이 필요하지만 기본 앱이나 API가 필요하지 않습니다.
전용 탭:
- 확장 페이지가 있는 브라우저 탭을 엽니다. SW와 통신하는 것입니다. 이 접근 방식은 지속적인 배경 페이지를 모방하지만 더 많은 메모리를 소비하고 사용자의 주의를 분산시킵니다.
주의:
-
과도한 리소스 소비: 필요한 경우에만 연결 유지 메커니즘을 사용하고 작업이 완료되면 비활성화합니다.
-
상태 관리: 전략 구현 예상치 못한 충돌이 발생할 경우 SW 상태를 저장하고 복원합니다.
-
지속적 가정: 상태 관리를 단순화하기 위한 목적으로만 SW 지속을 피하세요. 상태를 재구성하는 데 비용이 많이 들거나 빈번한 이벤트에 대응하여 성능을 향상시키는 데 주로 사용합니다.
위 내용은 Chrome 확장 프로그램의 서비스 워커를 지속적으로 유지하려면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!