Kalıcı depolama alanı

Kalıcı depolama alanı, kritik verilerin çıkarılmasına karşı korunmasına ve veri kaybı riskinin azaltılmasına yardımcı olabilir.

Düşük disk alanı gibi depolama alanı baskıları olduğunda tarayıcılar, genellikle Cache API ve IndexedDB'den gelenler de dahil olmak üzere verileri çıkarır, en son kullanılan kaynaktan. Bu durum, uygulama aşağıdaki durumlarda veri kaybına neden olabilir: ve uygulamanın güvenilirliğini %100 artırarak uygulamanın çalışması için gereken kaynakları (bunların her ikisi de olumsuz kullanıcı deneyimine yol açabilir.

Neyse ki Chrome ekibinin yaptığı araştırma, verilerin çok nadir otomatik olarak temizlenir. Kullanıcılar, çoğu zaman birden fazla temizle. Bu nedenle, bir kullanıcı sitenizi düzenli olarak ziyaret ederse, çok küçük olursa verileriniz atılır. Tarayıcının silinmesini önlemek için kullanıyorsanız, sitenizin tüm depolama alanının uygun şekilde işaretlenmesini isteyebilirsiniz. kalıcıdır.

Kalıcı depolama alanı birçok modern tarayıcıda desteklenir.

Tarayıcı Desteği

  • Chrome: 55..
  • Kenar: 79..
  • Firefox: 57..
  • Safari: 15.2..

Kaynak

Çıkartma, ne kadar veri depolayabileceğiniz ve kotanın nasıl yönetileceği hakkında daha fazla bilgi edinmek için Web için depolama başlıklı makaleyi inceleyin.

Sitenizin depolama alanının kalıcı olarak işaretlenip işaretlenmediğini kontrol etme

Sitenizin depolama alanının işaretlenip işaretlenmediğini öğrenmek için JavaScript kullanabilirsiniz olarak belirleyin. navigator.storage.persisted() çağrısı yapıldığında şu Vaat döndürülür: bir boole değeriyle çözümlenir ve bu değer, depolama alanının devam ediyordu.

// Check if site's storage has been marked as persistent
if (navigator.storage && navigator.storage.persist) {
  const isPersisted = await navigator.storage.persisted();
  console.log(`Persisted storage granted: ${isPersisted}`);
}

Kalıcı depolama alanını ne zaman talep etmeliyim?

Depolama alanınızın kalıcı olarak işaretlenmesini istemek için en uygun zaman kritik kullanıcı verilerini kaydedin ve isteğin ideal olarak kullanıcı hareketi yapın. Sayfa yüklemede veya başka bir önyüklemede kalıcı depolama alanı isteme kodunu tıkladığınızda tarayıcı kullanıcıdan izin isteyebilir. Kullanıcı bir şey yapamıyorsa istemde herhangi bir değişiklik kafa karıştırıcıdır ve büyük olasılıkla isteği reddeder. Ayrıca, çok sık oluyor. Kullanıcı izin vermemeye karar verdiyse hemen istemi tekrar görürsünüz.

Kalıcı depolama alanı iste

Sitenizin verileri için kalıcı depolama alanı istemek üzere şu numarayı arayın: navigator.storage.persist() boole değerini döndürür.

// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
  const isPersisted = await navigator.storage.persist();
  console.log(`Persisted storage granted: ${isPersisted}`);
}

İzin nasıl verilir?

Kalıcı depolama alanı bir izin olarak kabul edilir. Tarayıcılar çeşitli etmenleri dikkate alır.

Chrome ve diğer Chromium tabanlı tarayıcılar

Chrome ve diğer Chromium tabanlı tarayıcıların çoğu otomatik olarak izin istemeli ve kullanıcıya hiçbir istem göstermemelidir. Bunun yerine önemli kabul ediliyorsa, kalıcı depolama izni otomatik olarak verilir, aksi takdirde sessizce reddedilir.

Bir sitenin önemli olup olmadığını belirlemeye yönelik buluşsal yöntemler arasında şunlar bulunur:

  • Site etkileşim düzeyi ne kadar yüksek?
  • Site yüklendi veya yer işareti koyuldu mu?
  • Sitenin bildirim göstermesine izin verildi mi?

İstek reddedildiyse daha sonra tekrar istenebilir. kullanılarak değerlendirildiğinden emin olun.

Firefox

Firefox, izin isteği için kullanıcıya yetki verir. Kalıcı depolama olduğunda istendiğinde, kullanıcıya izin verip vermeyeceğini soran bir kullanıcı arayüzü pop-up penceresi gösterilir. sitenin kalıcı depolama alanında depolanmasını sağlar.

Bir site kalıcı depolama alanı istediğinde Firefox tarafından gösterilen bir pop-up.
Bir site kalıcı depolama alanı istediğinde Firefox tarafından gösterilen bir pop-up.

Hangi depolama alanı kalıcı depolama alanıyla korunur?

Kalıcı depolama izni verilirse tarayıcı, verilerin depolandığı yer:

  • Önbellek API'si
  • Çerezler
  • DOM Depolama Alanı (Yerel Depolama)
  • File System API (tarayıcı tarafından sağlanan ve korumalı alana alınmış dosya sistemi)
  • IndexedDB
  • Hizmet çalışanları
  • Uygulama Önbelleği (desteği sonlandırılmış, kullanılmamalıdır)
  • WebSQL (desteği sonlandırılmış, kullanılmamalıdır)

Kalıcı depolamayı devre dışı bırakma

Şu anda, tarayıcıya artık erişemediğinizi bildirmenin programatik bir yolu yoktur gerekir.

Sonuç

Chrome ekibinin yaptığı araştırmalar, mümkün olsa da depolanan verilerin nadiren Chrome tarafından otomatik olarak temizlenir. Olası kritik verileri korumak için veya önemli miktarda veri kaybına neden olursa kalıcı depolama, verilerinizin silinmemesini sağlamak tarayıcı tarafından kaldırılır. Ayrıca, kalıcı depolama alanını yalnızca kullanıcının gerek yok.

Teşekkürler

Bu makaleyi incelemeleri için Victor Costan ve Joe Medley'e özel teşekkürler. Bu makalenin orijinal halini yazan Chris Wilson'a teşekkür ederiz: ilk kez WebFundamentals'ta yer aldı.

Umberto'nun Unsplash'teki hero resim