한국정보기술진흥원
한국정보기술신문
thumbnail

정보기술 ·

브라우저의 JavaScript 타이머 스로틀링, 배터리 수명과 성능 최적화의 균형점

발행일
읽는 시간1분 37초

웹 브라우저가 백그라운드 탭의 JavaScript 타이머를 의도적으로 지연시키는 이유와 그 영향을 분석한 연구 결과가 공개됐다.

[한국정보기술신문] 현대 웹 브라우저들이 JavaScript 타이머를 스로틀링(throttling)하는 메커니즘에 대한 상세한 분석이 나왔다. 브라우저 개발자들은 배터리 수명 연장과 시스템 성능 최적화를 위해 백그라운드 탭에서 실행되는 타이머의 작동 방식을 제한하고 있는 것으로 확인됐다.

백그라운드 탭의 타이머 지연 메커니즘

브라우저는 사용자가 현재 보고 있지 않은 백그라운드 탭의 JavaScript 타이머를 최소 1초 간격으로 제한한다. setTimeout이나 setInterval로 설정한 타이머가 1밀리초 단위로 실행되도록 코딩했더라도, 해당 탭이 백그라운드 상태가 되면 브라우저는 이를 자동으로 1000밀리초(1초) 이상으로 조정한다. 이러한 스로틀링은 Chrome, Firefox, Safari 등 주요 브라우저 모두에 구현되어 있다.

타이머 스로틀링의 가장 큰 목적은 배터리 수명 보호다. 백그라운드에서 불필요하게 자주 실행되는 JavaScript 코드는 CPU를 깨우고 전력을 소비한다. 특히 여러 개의 탭을 열어둔 상태에서 각 탭이 고빈도 타이머를 실행하면 배터리 소모가 급격히 증가할 수 있다. 브라우저 제조사들은 실제 사용 패턴을 분석한 결과, 대부분의 백그라운드 탭에서는 1초 이하의 정밀한 타이머가 필요하지 않다는 결론을 내렸다.

개발자들이 겪는 실제 문제들

이러한 스로틀링은 특정 웹 애플리케이션 개발에 예상치 못한 문제를 야기한다. 실시간 데이터 업데이트가 필요한 주식 거래 플랫폼이나 채팅 애플리케이션에서 백그라운드 상태일 때 업데이트가 지연될 수 있다. 애니메이션이나 게임 개발자들도 requestAnimationFrame이 백그라운드에서 완전히 중단되는 현상을 경험한다. 일부 개발자들은 이를 우회하기 위해 Web Workers를 사용하지만, 이 역시 완전한 해결책은 아니다.

브라우저별 정책 차이

각 브라우저는 조금씩 다른 스로틀링 정책을 적용한다. Chrome은 백그라운드 탭의 타이머를 1초로 제한하지만, 오디오를 재생 중이거나 WebRTC 연결이 활성화된 경우 예외를 둔다. Firefox는 비슷한 정책을 따르되, 사용자가 최근에 상호작용한 탭에 대해서는 일정 시간 동안 스로틀링을 완화한다. Safari는 가장 공격적인 정책을 사용하며, 일정 시간이 지난 백그라운드 탭은 아예 일시 정지 상태로 만들기도 한다.

웹 표준 커뮤니티에서는 이러한 스로틀링 동작을 더 예측 가능하게 만들기 위한 논의가 진행 중이다. Page Visibility API를 통해 개발자들이 탭의 백그라운드 전환을 감지하고 적절히 대응할 수 있도록 하는 방안이 제시됐다. 또한 중요한 작업에 대해서는 스로틀링 예외를 요청할 수 있는 새로운 API 개발도 검토되고 있다. 전문가들은 사용자 경험과 시스템 성능 사이의 균형을 맞추는 것이 앞으로도 중요한 과제가 될 것이라고 전망했다.

한국정보기술신문 클라우드분과 이준호 기자 news@kitpa.org