2012-05-18 18 views
20

Używam web sql i indexeddb, ale jako fallback chcę użyć btree/localstorage. Ile danych mogę zapisać w localStorage na danej przeglądarce/platformie?Ile danych może zapisać przeglądarka w localStorage

Jeśli nikt nie wie, czy istnieje sposób na określenie rozmiaru obiektu javascript? na przykład JSON.stringify a następnie pomnożyć przez liczbę znaków? Wtedy mógłbym napisać skrypt, który zapisuje do localStorage i czyta, czy wartość jest tam i kiedy wystąpi błąd lub odczyt przestaje działać, to jest magiczna liczba.

Muszę przetestować to na (ie9, ff, safari, chrome, opera, safari na ipad, androida domyślna przeglądarka, delfin na androida, ff na androida, opera na androidzie).

Jeśli możesz mi pomóc dowiedzieć się, jak powiedzieć rozmiar w bajtach z ciągiem js wtedy uruchomić test i po wyniki tutaj.

Odpowiedz

32

Dzięki za odpowiedź allaire. Aby uzyskać dokładną odpowiedź, napisałem scenariusz. Rezultatem gry jest to, że dostajesz minimum 5 MB na webkit na komputer, np. Opera. IE rzeczywiście pozwala mi pisać 1GB, tak 1 GB danych.

Dziwnie, ff uległo awarii podczas próby napisania ciągu znaków o długości 742 znaków, ale napisałoby ciąg długości 1133 znaków, a to było z wyczyszczoną pamięcią podręczną, więc nie wiem, co z nią zrobić.

~1000 character object written to different localStorage[locations]

How big of a string can a given localStorage location be?

To jest brudny, ale skrypt można uruchomić testy samodzielnie, jeśli chcesz:

<!DOCTYPE /> 
<html> 
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     var alphabet = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 123456789 {} +-=*/\'[]<>|&^%$#@!,?."; 
     var i = 0; 
     var curWord = ""; 
     var tot = 0; 
     localStorage["sameSpot"] = null; 
     $("#same").bind("click", function() { 
      var write = function() { 
       if (!localStorage["sameSpot"]) 
        localStorage["sameSpot"] = alphabet[i++]; 
       else { 
        curWord = alphabet[i++] + localStorage["sameSpot"]; 
        localStorage["sameSpot"] = curWord; 
       } 
       if (i == alphabet.length) 
        i = 0; 
       tot++; 
       $("#local").html(curWord); 
       $("#memory").html(localStorage["sameSpot"]); 
       $("p").html("The number of characters written to localStorage[\"sameSpot\"] is: " + tot); 
       setTimeout(write, 1); 
      }; 
      write(); 
     }); 


     var tot2 = 0; 
     var totChars = 0; 
     $("#different").bind("click", function() { 
      var write = function() { 
       var saveObj = { 
        alphabet: alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet, 
        date: new Date(), 
        random: Math.random() 
       }; 
       saveObj = JSON.stringify(saveObj); 
       totChars += saveObj.length; 
       localStorage["t" + tot2] = saveObj; 
       $("#local").html(saveObj); 
       $("#memory").html(localStorage["t" + tot2]); 
       tot2++; 
       $("p").html("The number of unique entries made in localStorage[0++] is " + tot2 + " and the total number of characters is: " + totChars + " with an average of " + Math.floor(totChars/tot2) + " characters per record"); 
       setTimeout(write, 1); 
      }; 
      write(); 
     }); 
    }); 
</script> 
<body> 
<button id="same">Write Chars To Same Spot</button> 
<button id="different">Write Chars To Same Spot</button> 
<br /> 
<p></p> 

<textarea rows="50" cols="100" id="memory"></textarea> 
<textarea rows="50" cols="100" id="local"></textarea> 
</body> 
</html> 
+3

nie mogę przeczytać screeny, może ktoś wyciągnąć z wyników do stołu czy coś takiego? –

+0

Przejdź bezpośrednio do adresu URL zdjęć i możesz powiększyć. –

13

Z Wikipedii:

Przechowywanie Rozmiar Web przechowywanie zapewnia znacznie większą pojemność (5MB na domenę w Firefoksie [6], Google Chrome i Opera, 10MB za Storage Area w programie Internet Explorer [7]) w porównaniu do 4KB (około 1000 razy mniej miejsca) dostępnego dla plików cookie.

window.localStorage (od http://msdn.microsoft.com/en-us/library/cc197062(v=vs.85).aspx) cechą

localStorage zapewnia trwałe powierzchnie magazynowe dla domen. Pozwala aplikacjom internetowym na przechowywanie prawie 10 MB danych użytkownika, takich jak całe dokumenty lub skrzynka pocztowa użytkownika, na kliencie ze względu na wydajność.

Powiązane problemy