2012-05-18 19 views
20

Estoy usando web sql e indexeddb pero como alternativa me gustaría usar un btree/localstorage. ¿Cuántos datos puedo guardar en localStorage en un navegador/plataforma determinado?Cuantos datos puede guardar un navegador en localStorage

Si nadie sabe, ¿hay alguna manera de determinar el tamaño de un objeto javascript? p.ej. JSON.stringify y luego multiplicar por el número de caracteres? Luego podría escribir un script que escriba en localStorage y lea para ver si el valor está allí y una vez que hay un error o la lectura deja de funcionar, ese es el número mágico.

Necesito probar esto en (ie9, ff, safari, cromo, ópera, safari en ipad, navegador predeterminado androides, dolphin en android, ff en android, opera en android).

Si me puede ayudar a encontrar la forma de decir el tamaño, en bytes, de una cadena js, ejecutaré la prueba y publicaré los resultados aquí.

Respuesta

32

Gracias por la respuesta allaire. Para obtener una respuesta exacta, terminé escribiendo un guión. Los resultados del estadio son que obtienes un mínimo de 5MB en un webkit de escritorio, ff, es decir, opera. IE realmente me deja escribir 1GB, sí 1 GB de datos.

Curiosamente, ff se colgaba al intentar escribir una cadena con una longitud de 742 caracteres, pero escribía una cadena de 1133 caracteres de longitud y esto fue con el caché borrado, así que no sé qué pasa con eso.

~1000 character object written to different localStorage[locations]

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

Ésta es una escritura desordenada, pero se puede ejecutar las pruebas a ti mismo si quieres:

<!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

No puedo leer las capturas de pantalla, es posible que alguien tire de los resultados a cabo en una mesa o algo? –

+0

Ir directamente a la url de las imágenes y puede acercar la imagen. –

13

De Wikipedia:

tamaño de almacenamiento de almacenamiento Web ofrece mucha mayor capacidad de almacenamiento (5 MB por dominio en Mozilla Firefox, [6] Google Chrome y Opera, 10 MB por área de almacenamiento en Internet Explorer [7]) en comparación con 4 KB (alrededor de 1000 veces menos espacio) disponible para las cookies.

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

El localStorage proporciona áreas de almacenamiento persistente para los dominios. Permite a las aplicaciones web almacenar casi 10 MB de datos de usuario, como documentos completos o el buzón de un usuario, en el cliente por motivos de rendimiento.