Kalıcı depolama alanı

Kalıcı depolama alanı, önemli verilerin silinmesini önlemeye ve veri kaybı olasılığını azaltmaya yardımcı olabilir.

Disk alanının az olması gibi depolama alanı baskısıyla karşılaşıldığında tarayıcılar, en son kullanılan kaynakta bulunan verileri (Cache API ve IndexedDB'den alınanlar dahil) genellikle çıkarır. Bu durum, uygulama verileri sunucuyla senkronize etmediyse veri kaybına neden olabilir ve uygulamanın çalışması için gereken kaynakları kaldırarak uygulamanın güvenilirliğini azaltabilir. Her iki durum da olumsuz kullanıcı deneyimlerine yol açar.

Neyse ki Chrome ekibinin yaptığı araştırmalar, verilerin Chrome tarafından otomatik olarak çok nadiren temizlendiğini gösteriyor. Kullanıcıların depolama alanını manuel olarak temizlemesi çok daha yaygın bir durumdur. Bu nedenle, bir kullanıcı sitenizi düzenli olarak ziyaret ediyorsa verilerinizin çıkarılma olasılığı düşüktür. Tarayıcının verilerinizi silmesini önlemek için sitenizin depolama alanının tamamının kalıcı olarak işaretlenmesini isteyebilirsiniz.

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

Browser Support

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

Source

Tahliye, ne kadar veri depolayabileceğiniz ve kota sınırlamalarını nasıl ele alacağınız hakkında daha fazla bilgi edinmek için Web için depolama alanı başlıklı makaleyi inceleyin.

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

Sitenizin depolama alanının kalıcı olarak işaretlenip işaretlenmediğini belirlemek için JavaScript'i kullanabilirsiniz. navigator.storage.persisted() işlevini çağırmak, depolama alanının kalıcı olarak işaretlenip işaretlenmediğini belirten bir boole değeriyle çö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}`);
}

Ne zaman kalıcı depolama alanı isteğinde bulunmalıyım?

Depolama alanınızın kalıcı olarak işaretlenmesini istemek için en uygun zaman, önemli kullanıcı verilerini kaydettiğiniz zamandır. İdeal olarak, istek bir kullanıcı hareketiyle sarmalanmalıdır. Sayfa yüklenirken veya diğer bootstrap kodlarında kalıcı depolama alanı istemeyin. Aksi takdirde tarayıcı, kullanıcıdan izin isteyebilir. Kullanıcı, kaydedilmesi gerektiğini düşündüğü bir işlem yapmıyorsa istem kafa karıştırıcı olabilir ve kullanıcı isteği reddedebilir. Ayrıca çok sık istemde bulunmayın. Kullanıcı izin vermemeye karar verirse bir sonraki kaydetme işleminde hemen tekrar istemde bulunmayın.

Kalıcı depolama alanı isteğinde bulunma

Sitenizin verileri için kalıcı depolama alanı isteğinde bulunmak üzere navigator.storage.persist() numaralı telefonu arayın. Kalıcı depolama alanı izninin verilip verilmediğini belirten bir boole değeriyle çözümlenen 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 değerlendirilir. Tarayıcılar, kalıcı depolama alanı izinleri verip vermeyeceklerine karar verirken farklı faktörler kullanır.

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

Chrome ve Chromium tabanlı diğer 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 alanı izni otomatik olarak verilir, aksi takdirde sessizce reddedilir.

Bir sitenin önemli olup olmadığını belirlemek için kullanılan sezgisel yöntemler şunlardır:

  • Site etkileşimi düzeyi ne kadar yüksek?
  • Site yüklendi mi veya yer işaretlerine eklendi mi?
  • Siteye bildirim gösterme izni verildi mi?

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

Firefox

Firefox, izin isteğini kullanıcıya devreder. Kalıcı depolama alanı istendiğinde kullanıcıya, siteye kalıcı depolama alanında veri depolamasına izin verip vermeyeceğini soran bir kullanıcı arayüzü pop-up'ı gösterilir.

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ı ile korunur?

Kalıcı depolama izni verildiyse tarayıcı, aşağıdakilerde depolanan verileri silmez:

  • Cache API
  • Çerezler
  • DOM Depolama Alanı (Yerel Depolama)
  • File System API (tarayıcı tarafından sağlanan ve korumalı alan dosya sistemi)
  • IndexedDB
  • Hizmet çalışanları
  • Uygulama önbelleği (kullanımdan kaldırıldı, kullanmayın)
  • WebSQL (desteği sonlandırıldı, kullanmayın)

Kalıcı depolama alanını devre dışı bırakma

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

Sonuç

Chrome ekibinin araştırması, depolanan verilerin Chrome tarafından otomatik olarak temizlenmesinin mümkün olmasına rağmen nadiren gerçekleştiğini gösteriyor. Bulutta depolanmayan veya önemli veri kaybına neden olacak kritik verileri korumak için kalıcı depolama alanı, yerel cihaz depolama alanı baskısıyla karşılaştığında verilerinizin tarayıcı tarafından kaldırılmamasını sağlamak için yararlı bir araç olabilir. Ayrıca, yalnızca kullanıcının kalıcı depolama alanını kullanmak isteyeceği zamanlarda istekte bulunmanız gerektiğini unutmayın.

Teşekkürler

Bu belgeyi inceledikleri için Victor Costan ve Joe Medley'e teşekkür ederiz. Bu dokümanın ilk olarak WebFundamentals'ta yayınlanan orijinal sürümünü yazan Chris Wilson'a teşekkür ederiz.