Kalıcı depolama alanı

Kalıcı depolama, kritik verilerin çıkarılmaya karşı korunmasına yardımcı olabilir ve veri kaybı ihtimalini azaltabilir.

Düşük disk alanı gibi depolama alanı baskısıyla karşılaşıldığında tarayıcılar genellikle verileri, Cache API ve IndexedDB'dekiler de dahil olmak üzere, en son kullanılan kaynaktan çıkarır. Bu durum, uygulama verileri sunucuyla senkronize etmediyse veri kaybına neden olabilir. Ayrıca, uygulamanın çalışması için gereken kaynakları kaldırarak uygulamanın güvenilirliğini azaltabilir. Her iki durum da olumsuz kullanıcı deneyimine yol açar.

Neyse ki Chrome ekibi tarafından yapılan araştırma, verilerin Chrome tarafından çok nadir otomatik olarak temizlendiğini göstermektedir. Kullanıcıların depolama alanını manuel olarak temizlemesi çok daha yaygındır. Bu nedenle, bir kullanıcı sitenizi düzenli olarak ziyaret ediyorsa verilerinizin kaldırılma olasılığı düşüktür. Tarayıcının verilerinizi silmesini önlemek için sitenizin tamamının kalıcı olarak işaretlenmesini isteyebilirsiniz.

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

Tarayıcı Desteği

  • 55
  • 79
  • 57
  • 15,2

Kaynak

Çıkarma, ne kadar depolayabileceğiniz ve kota sınırlamalarının nasıl ele alınacağı hakkında daha fazla bilgi edinmek için Web için depolama bölümüne bakın.

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

Sitenizin depolama alanının kalıcı olarak işaretlenip işaretlenmediğini belirlemek için JavaScript'i kullanabilirsiniz. navigator.storage.persisted() çağrısı, depolama alanının kalıcı olarak işaretlenip işaretlenmediğini belirten boole ile çözümlenen bir Promise döndürür.

// 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 istemeliyim?

Depolama alanınızın kalıcı olarak işaretlenmesi için en uygun zaman kritik kullanıcı verilerini kaydettiğiniz zamandır. Bu nedenle, isteğin ideal olarak bir kullanıcı hareketiyle sarmalanması gerekir. Sayfa yüklenirken veya başka önyükleme kodunda kalıcı depolama alanı talep etmeyin. Aksi takdirde tarayıcı kullanıcıdan izin isteyebilir. Kullanıcı kaydedilmesi gerektiğini düşündüğü bir şey yapmıyorsa istem kafa karıştırıcı olabilir ve büyük olasılıkla isteği reddeder. Ayrıca çok sık soru sormayın. Kullanıcı izin vermemeye karar verdiyse bir sonraki kaydetme işleminde hemen tekrar istekte bulunmayın.

Kalıcı depolama alanı iste

Sitenizin verileri için kalıcı depolama isteğinde bulunmak üzere navigator.storage.persist() numaralı telefonu arayın. Boole ile çözümlenen ve kalıcı depolama izninin verilip verilmediğini gösteren bir Promise 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ı izin olarak kabul edilir. Tarayıcılar, kalıcı depolama alanı izinleri verilip verilmeyeceğine karar vermek için farklı faktörler kullanır.

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

Chrome ve diğer Chromium tabanlı tarayıcıların çoğu izin isteğini otomatik olarak işler ve kullanıcıya herhangi bir istem göstermez. Bunun yerine, bir site önemli kabul edilirse kalıcı depolama izni otomatik olarak verilir. Aksi takdirde bu izin sessizce reddedilir.

Bir sitenin önemli olup olmadığını belirlemek için yararlanılabilecek bulgular şunlardır:

  • Site etkileşim düzeyi ne kadar yüksek?
  • Site yüklendi veya yer işaretlerine eklendi mi?
  • Sitenin bildirimleri gösterme izni var mı?

İstek reddedilirse daha sonra tekrar istenebilir ve aynı buluşsal yöntemler kullanılarak değerlendirilir.

Firefox

Firefox, izin isteği için kullanıcıya yetki verir. Kalıcı depolama istendiğinde, kullanıcıdan sitenin kalıcı depolama alanında veri depolamasına izin verip vermeyeceğini soran bir kullanıcı arayüzü pop-up'ı görüntülenir.

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

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

Kalıcı depolama izni verilirse tarayıcı, şu ürünlerde depolanan verileri çıkarmaz:

  • Önbellek API'sı
  • kurabiyeler
  • 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 (kullanımdan kaldırıldı, kullanılmamalıdır)
  • WebSQL (kullanımdan kaldırıldı, kullanılmamalıdır)

Kalıcı depolama alanını kapatma

Şu anda, tarayıcıya artık kalıcı depolama alanına ihtiyacınız olmadığını bildirmenin programatik bir yolu yoktur.

Sonuç

Chrome ekibinin yaptığı araştırma, mümkün olsa da, depolanan verilerin Chrome tarafından nadiren otomatik olarak temizlendiğini göstermektedir. Kalıcı depolama, bulutta depolanamayacak veya önemli ölçüde veri kaybına neden olacak kritik verileri korumak için, yerel cihaz depolama baskısıyla karşılaştığında verilerinizin tarayıcı tarafından kaldırılmamasını sağlamaya yardımcı olan faydalı bir araç olabilir. Kalıcı depolama alanını yalnızca kullanıcının isteme olasılığının en yüksek olduğu durumlarda talep edebileceğinizi unutmayın.

Teşekkür ederiz

Bu makaleyi inceledikleri için Victor Costan ve Joe Medley'ye özel teşekkür ederiz. Bu makalenin ilk kez WebFundamentals'ta yayınlanan orijinal sürümünü yazan Chris Wilson'a teşekkür ederiz.

Umberto'nun Unsplash'teki lokomotif resmi