Chrome'daki yeni bir optimizasyon, IndexedDB verilerinin diskte depolanma şeklini iyileştirir. Bu geliştirme, özellikle diskte depolanan belirli dosyalara sıkıştırma özelliği ekleyerek büyük değerlerin Chrome'un depolama sisteminde nasıl yönetildiğine odaklanır. Bu makalede, güncellemenin önemli noktaları özetlenmiştir.
Chrome'un 129 sürümünden önceki depolama mekanizması
Chrome, IndexedDB verilerini diskte depolamak için LevelDB'yi kullanır. LevelDB hızlı bir anahtar/değer depolama kitaplığıdır ancak tek tek değerler bir veritabanı sayfasının boyutunu aştığında zorlanır. Bu sorunu gidermek için Chrome, 2017'den beri tek bir sayfadan daha büyük değerleri veritabanı dosyasının yanında diskte düz dosya olarak depoladı.
129 sürümünden itibaren depolama alanı
Büyük değerlerin sıkıştırılması
Doğrudan LevelDB veritabanında depolanan ve diske yazılmadan önce sıkıştırılıp okunduktan sonra sıkıştırması kaldırılan içeriklerin aksine, düz dosya olarak depolanan büyük dosyalar sıkıştırılmamıştır. Yeni güncellemeyle birlikte Chrome, bu büyük dosyaları Snappy gerçek zamanlı sıkıştırma kitaplığını kullanarak sıkıştıracak. Bu sayede önemli ölçüde yer tasarrufu sağlanacak. Bu, özellikle büyük JavaScript değeri dizileri, XML veya JSON gibi yapılandırılmış veriler için etkilidir. Büyük ancak zaten sıkıştırılmış medya dosyaları veya daha seyrek olarak sitenin kendi sıkıştırma ve açma işlemlerini yapması durumunda etkili değildir.
Depolama verimliliği üzerindeki etkisi
Sıkıştırma, dosya boyutunu bir LevelDB sayfasının boyutunun altına düşürürse veriler LevelDB'ye geri taşınır. Bu değişiklik, yalnızca alan tasarrufu sağlamakla kalmaz, aynı zamanda disk I/O işlemlerini azaltarak genel performansı artırır.
Snappy sıkıştırma algoritması
Chrome ekibi, maksimum sıkıştırma yerine hız için optimizasyon yaptığından sıkıştırma için Snappy'yi seçti. Sıkıştırma veya sıkıştırma sırasında ölçülebilir bir performans cezası vermeyecek kadar hızlıdır.
Performans iyileştirmeleri
Sıkıştırma ve sıkıştırma açma işlemleri, Chrome'un çok işlemli mimarisinin bir parçası olan oluşturucu işleminde gerçekleştirilir. Bu sayede tarayıcı işlemine gönderilen mesajların boyutu azalır ve performansta daha fazla iyileştirme sağlanır. Sentetik karşılaştırmalar, bu güncellemenin IPC (İşlemler Arası İletişim) ve disk G/Ç'sinin azaltılması nedeniyle bazı işlemleri öncekinden iki ila üç kat daha hızlı hale getirebileceğini göstermiştir. Chrome ekibinin ölçümlerine göre, pratikte 1 MB yapılandırılmış veri yükü, diskten sayfaya yaklaşık dörtte bir sürede (cihaz donanımına ve sistem etkinliğine bağlı olarak yüksek değişkenlik göstererek) aktarılır.
Geliştirici ve kullanıcı üzerindeki etkisi
Bu değişiklikler hem geliştiriciler hem de kullanıcılar için tamamen şeffaftır. Ancak kullanıcılar performansta iyileşme ve depolama alanı kullanımında düşüş fark edebilir.
- Alan tasarrufu: Sıkıştırma yalnızca bu güncellemeden sonra depolanan yeni verilere uygulanır. Alan tasarrufu,
navigator.storage.estimate()
gibi web API'leri kullanılarak veya Chrome Geliştirici Araçları'ndaki Uygulama panelinin altındaki Depolama bölümünde dolaylı olarak gözlemlenebilir. - Özelliği test etme: Geliştiriciler, bu davranışı Chrome'un yayın öncesi sürümlerinde (129 öncesi)
--enable-features="IndexedDBCompressValuesWithSnappy"
işaretiyle etkinleştirerek test edebilir.
Bu güncelleme, Chrome'un büyük IndexedDB değerlerini yönetmedeki verimliliğini artırır. Böylece, performanstan ödün vermeden hem yer hem de zamandan tasarruf sağlar. Bu da tarayıcıda verilerin depolanma ve bunlara erişme biçiminde önemli bir iyileştirme anlamına gelir. Geliştiriciler bu değişiklikleri anlayarak Chrome'un performansını ve depolama mekanizmalarını optimize etme çalışmalarıyla ilgili avantaj elde edebilir, böylece daha sorunsuz ve verimli bir kullanıcı deneyimi sağlayabilir.
Teşekkür ederiz
Bu doküman Evan Stade ve Rachel Andrew tarafından incelenmiştir.