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 sonracomplete
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.