Düşük disk alanı gibi depolama baskısıyla karşı karşıya kaldıklarında, tarayıcılar genellikle Cache API ve IndexedDB dahil olmak üzere verileri en son kullanılan kaynaktan çıkarır. Bu, uygulama verileri sunucuyla senkronize etmemişse veri kaybına neden olabilir ve uygulamanın çalışması için gereken kaynakları kaldırarak uygulamanın güvenilirliğini azaltabilir ve her ikisi de olumsuz kullanıcı deneyimlerine yol açar.
Neyse ki, Chrome ekibi tarafından yapılan araştırma, verilerin Chrome tarafından çok nadiren otomatik olarak temizlendiğini gösteriyor. Kullanıcıların depolamayı manuel olarak temizlemesi çok daha yaygındır. Bu nedenle, bir kullanıcı sitenizi düzenli olarak ziyaret ederse, verilerinizin tahliye edilme 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 desteklenen birçok modern tarayıcılar.
- Chrome 55, Desteklenir 55
- Firefox 57, Desteklenir 57
- Kenar 79, Desteklenen 79
- Safari 15.2, Desteklenir 15.2
Tahliye, ne kadar depolayabileceğiniz ve kota sınırlamalarının nasıl ele alınacağı hakkında daha fazla bilgi edinmek için bkz. Web için Depolama.
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. arama navigator.storage.persisted()
depolamanın kalıcı olarak işaretlenip işaretlenmediğini belirten bir boole ile çözümlenen bir Taahhüt 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ı depolamayı ne zaman istemeliyim? #
Depolama alanınızın kalıcı olarak işaretlenmesini istemek için en iyi zaman, kritik kullanıcı verilerini kaydettiğiniz zamandır ve istek ideal olarak bir kullanıcı hareketiyle sarılmalıdır. Sayfa yüklemede veya diğer önyükleme kodunda kalıcı depolama istemeyin, 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. Ek olarak, çok sık sormayın. Kullanıcı izin vermemeye karar verdiyse, bir sonraki kaydetme işleminde hemen tekrar sormayın.
Kalıcı depolama talep edin #
Sitenizin verileri için kalıcı depolama talep etmek için arayın navigator.storage.persist()
. Kalıcı depolama izninin verilip verilmediğini belirten bir boole ile çö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, izin. Tarayıcılar, kalıcı depolama izinleri verilip verilmeyeceğine karar vermek için 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 izni otomatik olarak verilir, aksi takdirde sessizce reddedilir.
Bir sitenin önemli olup olmadığını belirlemeye yönelik buluşsal yöntemler şunları içerir:
- Site etkileşim düzeyi ne kadar yüksek?
- Site yüklendi mi veya yer imlerine eklendi mi?
- Siteye bildirimleri gösterme izni verildi mi?
Talep reddedilirse, daha sonra tekrar talep edilebilir ve aynı buluşsal yöntem kullanılarak değerlendirilir.
Firefox #
Firefox, izin isteğini kullanıcıya devreder. Kalıcı depolama istendiğinde, kullanıcıya sitenin kalıcı depolamada veri depolamasına izin verip vermeyeceğini soran bir UI açılır penceresiyle sorar.
Kalıcı depolama ile hangi depolama korunur? #
Kalıcı depolama izni verilirse, tarayıcı şurada depolanan verileri çıkarmaz:
- Önbellek API’sı
- Kurabiye
- DOM Depolama (Yerel Depolama)
- Dosya Sistemi API’si (tarayıcı tarafından sağlanan ve korumalı dosya sistemi)
- IndexedDB
- servis ç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 nasıl kapatılır #
Şu anda, tarayıcıya artık kalıcı depolamaya ihtiyacınız olmadığını söylemenin programlı bir yolu yoktur.
Çözüm #
Chrome ekibi tarafından yapılan araştırma, mümkün olmasına rağmen depolanan verilerin Chrome tarafından nadiren otomatik olarak temizlendiğini gösteriyor. Kalıcı depolama, bulutta depolanamayan veya önemli ölçüde veri kaybına yol açabilecek kritik verileri korumak için, yerel cihaz depolama baskısıyla karşı karşıya kaldığında verilerinizin tarayıcı tarafından kaldırılmamasını sağlamak için yararlı bir araç olabilir. Ve unutmayın, kalıcı depolamayı yalnızca kullanıcının isteme olasılığı en yüksek olduğunda isteyin.
Teşekkürler #
Bu makaleyi gözden geçirdikleri için Victor Costan ve Joe Medley’e özel teşekkürler. İlk olarak WebFundamentals’ta yayınlanan bu makalenin orijinal versiyonunu yazan Chris Wilson’a teşekkürler.
Umberto’nun hazırladığı kahraman görseli Unsplash