IndexedDB'de varsayılan dayanıklılık modunda değişiklik

IndexedDB'deki varsayılan dayanıklılık modu Chrome 121 yerine strict iken relaxed olarak değiştiriliyor. Bu düzenlemenin amacı, performansı artırmak ve Firefox, Safari gibi diğer önemli tarayıcılarla uyumlu hale getirmektir. Söz konusu blog yayınında, bu değişikliğin ayrıntıları ve web geliştiricileri için ne anlama geldiği açıklanmaktadır.

IndexedDB dayanıklılık modları

Büyük miktarlarda yapılandırılmış veri depolamak için güçlü bir web API'si olan IndexedDB, readwrite işlemleri için iki dayanıklılık modu sunar:

  • strict: Bu mod, complete etkinliğini yayınlamadan önce işletim sistemine açıkça diskteki değişiklikleri temizlemesini bildirir.
  • relaxed Bu mod, varsayılan OS temizleme davranışına dayanır ve değişiklikler işletim sistemi arabelleğinde yapıldıktan sonra complete etkinliğini yayınlar. Bu etkinlik, genellikle birkaç saniyede bir temizlenir.

strict işlevinin, değişikliklerin gerçekten hemen diske yazılmasını sağlamadığını unutmamak önemlidir. Bir site put() çağırdıktan sonra, bir güç kesintisinin değişikliğin diske girmemesine ve dolayısıyla uygulamanın bir sonraki çalıştırmasında eksik olmasına neden olabilecek belirli bir süre vardır.

strict dayanıklılığı garantileri söz konusu olduğunda, IndexedDB işlemi complete etkinliği veriler gerçekten yazılan sonraki zamana kadar tetiklenmez. relaxed dayanıklılığında ise complete etkinliği etkinleştiğinde veriler hâlâ yazılma sürecindedir. (Sürecin tamamı hakkında daha fazla bilgi için bu açıklayıcıyı inceleyin).

Bu nedenle, strict yalnızca bir sonraki işlemi yapmadan önce yazıldığını bilmeniz kesinlikle bilmeniz gereken işlemler içindir. Veri taşıma, strict dayanıklılığının gerekli olduğu bir örnektir. Bir yedek mağazasından diğerine geçiş yaparken, yeni biçim yazılana kadar eski biçimi silmek istemezsiniz. Bu sayede, strict dayanıklılığı sayesinde bir taşıma rutini daha kolay hale gelir.

Varsayılan dayanıklılık modu değişikliği

Bu değişiklikteki en önemli nokta, Chrome'daki readwrite işlemleri için varsayılan dayanıklılık modudur. Şu ana kadar varsayılan değer strict idi ve veri değişiklikleri için diskin anında yazılmasını sağlıyordu. Ancak, performansla ilgili değerlendirmeler ve tamamı relaxed kullanan diğer önemli tarayıcılarla uyum sağlamak amacıyla Chrome da varsayılan ayarı relaxed olarak değiştirmeyi planlamaktadır.

Bu değişiklik, performans ile veri dayanıklılığı arasında daha iyi bir denge sağlamak için tasarlanmıştır. strict maksimum veri dayanıklılığı sağlar, ancak relaxed çoğu web uygulaması için genellikle yeterli olur ve aşağıdaki yöntemlerle performansı önemli ölçüde artırabilir.

  • Hız: Gerçek hayattan örneklerde, Chrome ekibi hızda 3 ile 30 kat arasında artış gözlemlemiştir.
  • Özellikle Katı Hal Diski (SSD) olan cihazlar için disk dayanıklılığı.
  • Uzun pil ömrü.
  • Okuma hızında iyileştirme. Okuma işlemlerinin genellikle yazma işlemlerinin arkasında engellendiği IndexedDB'nin mimarisi nedeniyle okuma hızı ikincil bir etki olarak iyileştirilmiştir.
  • Disk işlemleri paylaşılan bir sistem kaynağı olduğundan cihazın tamamı bundan olumlu etkilenir.

Birlikte çalışabilirlik ve uyumluluk

Bu değişikliğin önemli bir yönü, birlikte çalışabilirlik ve uyumluluk üzerindeki etkisidir. Chromium, diğer önemli tarayıcı tedarikçilerinin davranışlarına uyum sağlayarak birlikte çalışabilirliği iyileştirir. Bu standardın kendisi farklı uygulamalara olanak tanımakta ve bu değişiklik söz konusu uygulamaları uyumlu hale getirmeyi amaçlamaktadır. Bu GitHub Sorununu inceleyerek söz konusu değişiklikle ilgili daha fazla geçmişe dönük bilgi edinebilirsiniz.

Bu durum web geliştiricileri için ne anlama geliyor?

Bu değişiklik herhangi bir yeni API yüzeyi sunmaz. Mevcut IndexedDB API'si aynı kalacak. Bu değişiklik, öncelikli olarak readwrite işlemlerinin varsayılan davranışını etkilemektedir. İşlem oluştururken tercih ettiğiniz dayanıklılık modunu belirterek veri dayanıklılığı ve performansını kontrol edebilirsiniz. Aşağıdaki kod örneğinde, isteğe bağlı seçenekler dizisinde durability politikasının strict olarak ayarlanmasıyla eski davranışın nasıl geri döndürüleceği gösterilmektedir.

let db;
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onsuccess = (event) => {
  db = DBOpenRequest.result;
};
const transaction = db.transaction(
  ['toDoList'],
  'readwrite',
  { durability: 'strict' });

Değişikliği gönderilmeden önce yerel olarak test etme

Bu değişiklik Chrome 121 sürümünde geçerlilik kazanacaktır. Yeni davranışı daha önce yerel olarak test etmek isterseniz chrome://flags bölümünde #indexed-db-default-durability-relaxed işaretini etkinleştirin.

Daha Fazla Bilgi

Bu değişiklikle ilgili daha fazla teknik bilgi ve güncellemeler için izleme hatası ve Chrome Platform Durumu girişi başlıklı makaleyi inceleyin.

Özetle, Chrome'un IndexedDB'deki varsayılan dayanıklılık modunu değiştirme geçişi, diğer başlıca tarayıcılarla uyumluluğu korurken performansı artırmayı amaçlamaktadır. Yeni varsayılan ayar performans iyileştirmeleri sağlayacağından çoğu durumda hiçbir işlem yapmamanızı öneririz. Gerekirse tercih ettiğiniz dayanıklılık modunu belirtmeye devam ederek web uygulamalarınızda veri dayanıklılığının ve performansının kontrolünü elinize alabilirsiniz.

Teşekkür

Bu makale Evan Stade ve Rachel Andrew tarafından incelendi.