2011-11-07 16 views
5

Web Deposu için W3C spesifikasyonları (bu bir yanlış isim olsa da, yaygın olarak HTML5 yerel depolama olarak bilinir), kullanıcı aracılarının 5 MB'de önerilen bir boyut sınırını zorlamalarına izin verir. Ağın etrafında bulduğum çeşitli kaynaklara göre, pek çok modern tarayıcı, 10MB veren IE dışında bu 5 MB'lık sınırı kullanır. Birincisi, bilmek istiyorum, limit toplam localStorage ve sessionStorage toplamı için mi yoksa tek tek mi?Web Depolama için boyut sınırlarıyla nasıl başa çıkabilirim?

Şimdi, bu sınırlarla nasıl başa çıkıyoruz? Belirli bir tarayıcı için sınırın ne olduğunu öğrenmenin bir yolu var mı? Farklı tarayıcılarda istatistikleri tutan herhangi bir web sitesi var mı? Tarayıcı sınırın üzerine çıktığında atılan bir istisna mıdır? Farklı tarayıcılarda bu "sınıf" istisnasını test etmek için kusursuz bir yol var mı?

+1

bu iyi bir cevap buldunuz mu? –

+1

Hayır, pek değil. Daha da kötüsü yapmak için, web sitesi depolama sınırını aşmaya çalıştığında bir iletişim kutusu görüntüleyen önemli bir tarayıcı (hangisini unuttum) var. Web geliştiricisinin bu mesajı özelleştirmesi için bir yol yoktur, bu yüzden "bu web sitesi depolama sınırını aşmaya çalışıyor" gibi bir şey söyleyecektir, ki bu çok kötü bir kullanıcı deneyimi. Bu nedenle şirketim kullanım durumumuz için yerel depolama alanını kullanmamaya karar verdi ve sadece javascript dosyaları gibi görünen ancak aslında sadece dinamik olarak oluşturulmuş nesne tanımları içeren URL'lerle varsayılan tarayıcı önbellekleme mekanizmasını kullanacaktı. – Kidburla

+0

localStorage ile konuşmayı sağlayan bir modül yazdım, böylece izin verilen maksimum değeri geçmeyecek şekilde, 4mb'yi aşarsa 3MB'nin altına düşene kadarki en eski girdileri boşaltır. Ayrıca, her defasında kullanılan bayt miktarı, sistem her zaman eklendiğinde ya da çıkarıldığında güncellenir; yani, şu anda kullanılan bayt miktarını, büyük-o 1 arama süresiyle alabilirsiniz. –

cevap

2

AFAIK, boyutunu belirlemek için localStorage nesnesinde bir yöntem yoktur. Ancak, depolama sınırını aşan miktarda veri yazmaya çalışmak, yakalayabileceğiniz bir istisna ile sonuçlanacaktır.

Temelde http://arty.name/localstorage.html

bir göz atın, böyle bir try...catch bloğunda yazma işlevini sarabilirsiniz:

function write(value, name) { 
    try { 
     localStorage.field = value; 
     return true; 
    } catch (e) { 
     return false; 
    } 
} 
+1

Merhaba, evet, o sitede örneği gördüm, ve gönderimden bu yana, bunun bir istisna yakaladığını fark ettim. Ancak bu istisnanın doğru formda olup olmadığını test etmenin bir yolu olup olmadığını merak ettim mi? Örneğin, tarayıcımda (Firefox) istisna adı "NS_ERROR_DOM_QUOTA_REACHED" ama Firefox'a özgü olduğunu düşünüyorum. Bence bu tür şeylerle başa çıkmak için bir kütüphane olmalı! – Kidburla

+0

Ayrıca, bu site için, kotasının hem localStorage hem de sessionStorage için mi, yoksa sadece biri mi yoksa diğeri mi olduğu açık değildi. – Kidburla

İlgili konular