Chrome의 새로운 최적화로 IndexedDB 데이터가 디스크에 저장되는 방식이 개선되었습니다. 이 개선사항은 특히 디스크에 저장된 특정 파일에 압축을 도입하여 Chrome의 스토리지 시스템 내에서 대용량 값이 관리되는 방식에 중점을 둡니다. 이 도움말에서는 이번 업데이트의 주요 사항을 요약합니다.
버전 129 이전의 Chrome 스토리지 메커니즘
Chrome은 LevelDB를 사용하여 IndexedDB 데이터를 디스크에 저장합니다. LevelDB는 빠른 키-값 저장소 라이브러리이지만 개별 값이 데이터베이스 페이지의 크기를 초과하면 문제가 발생합니다. 이 문제를 해결하기 위해 2017년부터 Chrome은 단일 페이지보다 큰 값을 데이터베이스 파일과 함께 디스크에 일반 파일로 저장했습니다.
버전 129의 저장용량
큰 값 압축
디스크에 쓰기 전에 압축되고 읽은 후 압축 해제되는 LevelDB 데이터베이스 내에 직접 저장된 콘텐츠와 달리 일반 파일로 저장된 대용량 파일은 압축되지 않았습니다. 이번 업데이트로 Chrome은 Snappy 실시간 압축 라이브러리를 사용하여 이러한 대용량 파일을 압축하므로 상당한 공간을 절약할 수 있습니다. 이는 대규모 JavaScript 값 배열, XML 또는 JSON과 같은 구조화된 데이터에 특히 효과적입니다. 크기는 크지만 이미 압축된 미디어 파일이나 사이트에서 이미 자체적으로 압축 및 압축 해제하는 경우(드물게 발생)에는 효과가 없습니다.
스토리지 효율성에 미치는 영향
압축으로 인해 파일 크기가 LevelDB 페이지 크기 아래로 줄어들면 데이터가 LevelDB로 다시 이동합니다. 이 변경사항은 공간을 절약할 뿐만 아니라 디스크 I/O 작업을 줄여 전반적인 성능을 개선합니다.
Snappy 압축 알고리즘
Chrome팀은 최대 압축이 아닌 속도에 최적화되어 있기 때문에 Snappy를 압축에 사용했습니다. 압축 또는 압축 해제 중에 측정 가능한 성능 저하가 발생하지 않을 만큼 빠릅니다.
성능 개선
압축 및 압축 해제는 Chrome의 멀티프로세스 아키텍처의 일부인 렌더러 프로세스 내에서 처리됩니다. 이렇게 하면 브라우저 프로세스로 전송되는 메시지의 크기가 줄어 성능이 더욱 개선됩니다. 합성 벤치마크에 따르면 이 업데이트는 IPC (프로세스 간 통신) 및 디스크 I/O 감소로 인해 일부 작업을 이전보다 2~3배 더 빠르게 실행할 수 있습니다. 실제로 Chrome팀의 측정 결과에 따르면 1MB의 정형 데이터 페이로드는 디스크에서 페이지로 약 4분의 1의 속도로 전송됩니다 (기기 하드웨어 및 시스템 활동에 따라 가변성이 높음).
개발자 및 사용자에게 미치는 영향
이러한 변경사항은 개발자와 사용자 모두에게 완전히 투명합니다. 하지만 사용자는 성능이 개선되고 스토리지 사용량이 줄어드는 것을 경험할 수 있습니다.
- 저장공간 절약: 압축은 이 업데이트 후에 저장된 새 데이터에만 적용됩니다. 공간 절약은
navigator.storage.estimate()
와 같은 웹 API를 사용하거나 Chrome DevTools의 애플리케이션 패널 아래에 있는 저장소 섹션에서 간접적으로 확인할 수 있습니다. - 기능 테스트: 개발자는
--enable-features="IndexedDBCompressValuesWithSnappy"
플래그를 사용하여 이 기능을 사용 설정하여 Chrome의 출시 전 버전 (129 이전)에서 이 동작을 테스트할 수 있습니다.
이 업데이트는 대규모 IndexedDB 값을 관리하는 Chrome의 효율성을 향상하여 성능을 저하시키지 않으면서 공간과 시간을 모두 절약할 수 있도록 하며 브라우저에서 데이터를 저장하고 액세스하는 방식을 크게 개선합니다. 개발자는 이러한 변경사항을 이해하여 Chrome의 성능 및 저장소 메커니즘을 최적화하기 위한 지속적인 노력의 혜택을 누리고 더 원활하고 효율적인 사용자 환경을 제공할 수 있습니다.