Dado que localStorage
(actualmente) solo admite cadenas como valores, y para hacer eso, los objetos deben ser encadenados (almacenados como cadenas JSON) antes de que puedan almacenarse, existe una limitación definida con respecto a la longitud de los valores.
¿Alguien sabe si hay una definición que se aplique a todos los navegadores?
javascript
html
local-storage
Codekie
fuente
fuente
Respuestas:
Citando del artículo de Wikipedia sobre almacenamiento web :
Y también citando un artículo de John Resig [publicado en enero de 2007]:
fuente
domain
(origin
) puede almacenar 5 MB en cualquier cliente individual. Los datos se almacenan en la máquina del cliente; de ninguna manera ellocalStorage
mecanismo interactúa entre los clientes.http://example.com
yhttps://example.com
no son del mismo origen (diferentes esquemas).http://example.com
yhttp://www.example.com
no son del mismo origen (diferentes hosts).http://example.com
yhttp://example.com:8080
no son del mismo origen (puertos diferentes). HTH. :-)En realidad, Opera no tiene un límite de 5 MB. Ofrece aumentar el límite ya que las aplicaciones requieren más. El usuario puede incluso elegir "Almacenamiento ilimitado" para un dominio.
Puede probar fácilmente los límites / cuota de almacenamiento local usted mismo.
fuente
UCS-2
. Si bien es similar,UFT16
hay algunas diferencias muy importantes ... sobre todo en torno al hecho de que UCS-2 es anterior a UFT.Aquí hay un guión sencillo para descubrir el límite:
Aquí está la esencia , JSFiddle y la publicación del blog .
El script probará la configuración de cadenas de texto cada vez más grandes hasta que el navegador arroje una excepción. En ese punto, borrará los datos de prueba y establecerá una clave de tamaño en localStorage almacenando el tamaño en kilobytes.
fuente
Encuentre la longitud máxima de una sola cadena que se puede almacenar en
localStorage
Este fragmento encontrará la longitud máxima de una cadena que se puede almacenar
localStorage
por dominio.Tenga en cuenta que la longitud de una cadena está limitada en JavaScript; si desea ver la cantidad máxima de datos que se pueden almacenar
localStorage
cuando no se limita a una sola cadena, puede usar el código en esta respuesta .Editar: los fragmentos de pila no son compatibles
localStorage
, por lo que aquí hay un enlace a JSFiddle .Resultados
Chrome (45.0.2454.101): 5242878 caracteres
Firefox (40.0.1): 5242883 caracteres
Internet Explorer (11.0.9600.18036) :
16386122066122070 caracteresObtengo resultados diferentes en cada ejecución en Internet Explorer.
fuente
Navegadores móviles:
Navegadores de escritorio:
Link de referencia
fuente
No asuma que hay 5MB disponibles: la capacidad de almacenamiento local varía según el navegador, con 2.5MB, 5MB y los valores más comunes son ilimitados. Fuente: http://dev-test.nemikor.com/web-storage/support-test/
fuente
No desea encadenar objetos grandes en una sola entrada localStorage. Eso sería muy ineficiente: todo se tendría que analizar y volver a codificar cada vez que cambien algunos pequeños detalles. Además, JSON no puede manejar múltiples referencias cruzadas dentro de una estructura de objeto y borra muchos detalles, por ejemplo, el constructor, las propiedades no numéricas de las matrices, lo que hay en una entrada dispersa, etc.
En cambio, puedes usar Rhaboo . Almacena objetos grandes usando muchas entradas de localStorage para que pueda hacer pequeños cambios rápidamente. Los objetos restaurados son copias mucho más precisas de los guardados y la API es increíblemente simple. P.ej:
Por cierto, lo escribí.
fuente
Estoy haciendo lo siguiente:
fuente
Realmente me gusta la respuesta de cdmckay , pero realmente no se ve bien verificar el tamaño en tiempo real: es demasiado lento (2 segundos para mí). Esta es la versión mejorada, que es mucho más rápida y más exacta, también con una opción para elegir qué tan grande puede ser el error (por defecto
250,000
, el error más pequeño es - cuanto más largo es el cálculo):Probar:
Esto funciona dramáticamente más rápido para el error estándar; También puede ser mucho más exacto cuando sea necesario.
fuente
He condensado una prueba binaria en esta función que uso:
También realiza una copia de seguridad del contenido antes de la prueba, luego los restaura.
Cómo funciona: duplica el tamaño hasta que se alcanza el límite o la prueba falla. Luego almacena la mitad de la distancia entre bajo y alto y resta / agrega la mitad de la mitad cada vez (resta en caso de falla y agrega en caso de éxito); perfeccionando el valor adecuado.
upperLimit
es 1GB por defecto, y solo limita qué tan alto hacia arriba escanear exponencialmente antes de comenzar la búsqueda binaria. Dudo que esto deba cambiarse, pero siempre estoy pensando en el futuro. ;)En Chrome:
IE11, Edge y FireFox también informan el mismo tamaño máximo (10485762 bytes).
fuente
localStorage.Clear()
antes y después de su pruebaPuede usar el siguiente código en los navegadores modernos para verificar de manera eficiente la cuota de almacenamiento (total y usado) en tiempo real:
fuente
Usage (in Bytes): 647 , Total Quota (in Bytes): 32901464711
Eso está mal: el tamaño total posible es en realidad 10485762.Una vez que desarrollé la extensión de Chrome (navegador de escritorio) y probé el almacenamiento local tamaño máximo real de por este motivo.
Mis resultados:
Más que el
10240 KB
uso me devolvió el error:fuente
Escribí este código simple que está probando el tamaño localStorage en bytes.
https://github.com/gkucmierz/Test-of-localStorage-limits-quota
Páginas de Github:
https://gkucmierz.github.io/Test-of-localStorage-limits-quota/
Tengo los mismos resultados en Chrome de escritorio, Opera, Firefox, Chrome Brave y Mobile que es ~ 5Mbytes
Y un resultado medio pequeño en safari ~ 2Mbytes
fuente