Étant donné que localStorage
(actuellement) ne prend en charge que les chaînes en tant que valeurs, et pour ce faire, les objets doivent être stringifiés (stockés en tant que chaîne JSON) avant de pouvoir être stockés, existe-t-il une limitation définie concernant la longueur des valeurs.
Est-ce que quelqu'un sait s'il existe une définition qui s'applique à tous les navigateurs?
javascript
html
local-storage
Codekie
la source
la source
Réponses:
Citant un article de Wikipédia sur le stockage Web :
Et citant également un article de John Resig [publié en janvier 2007]:
la source
domain
(origin
) peut stocker 5 Mo sur n'importe quel client individuel. Les données sont stockées sur la machine des clients - en aucun cas lelocalStorage
mécanisme n'interagit entre les clients.http://example.com
ethttps://example.com
ne sont pas de la même origine (régimes différents).http://example.com
ethttp://www.example.com
ne sont pas de la même origine (hôtes différents).http://example.com
ethttp://example.com:8080
ne sont pas de la même origine (ports différents). HTH. :-)En fait, Opera n'a pas de limite de 5 Mo. Il propose d'augmenter la limite que les applications nécessitent plus. L'utilisateur peut même choisir "Stockage illimité" pour un domaine.
Vous pouvez facilement tester vous-même les limites / quotas de stockage local .
la source
UCS-2
. Bien qu'il soit similaire,UFT16
il existe des différences très importantes ... principalement liées au fait que UCS-2 est antérieur à l'UFT.Voici un script simple pour découvrir la limite:
Voici l'essentiel , JSFiddle et le blog .
Le script testera la définition de chaînes de texte de plus en plus grandes jusqu'à ce que le navigateur lance et fasse exception. À ce stade, il effacera les données de test et définira une clé de taille dans localStorage stockant la taille en kilo-octets.
la source
Rechercher la longueur maximale d'une seule chaîne pouvant être stockée dans
localStorage
Cet extrait trouvera la longueur maximale d'une chaîne pouvant être stockée dans
localStorage
chaque domaine.Notez que la longueur d'une chaîne est limitée en JavaScript; si vous souhaitez afficher la quantité maximale de données pouvant être stockées dans une liste
localStorage
non limitée à une seule chaîne, vous pouvez utiliser le code dans cette réponse .Edit: Stack Snippets ne prend pas en charge
localStorage
, voici donc un lien vers JSFiddle .Résultats
Chrome (45.0.2454.101): 5242878 caractères
Firefox (40.0.1): 5242883 caractères
Internet Explorer (11.0.9600.18036) :
16386122066122070 caractèresJ'obtiens des résultats différents à chaque exécution dans Internet Explorer.
la source
Navigateurs mobiles:
Navigateurs de bureau:
Lien de référence
la source
Ne présumez pas que 5 Mo sont disponibles - la capacité de stockage local varie selon le navigateur, 2,5 Mo, 5 Mo et illimité étant les valeurs les plus courantes. La source: http://dev-test.nemikor.com/web-storage/support-test/
la source
Vous ne voulez pas chaîne de gros objets en une seule entrée localStorage. Ce serait très inefficace - le tout devrait être analysé et ré-encodé chaque fois que de légers changements de détails sont apportés. De plus, JSON ne peut pas gérer plusieurs références croisées dans une structure d'objet et efface beaucoup de détails, par exemple le constructeur, les propriétés non numériques des tableaux, ce qui se trouve dans une entrée clairsemée, etc.
Au lieu de cela, vous pouvez utiliser Rhaboo . Il stocke de gros objets à l'aide de nombreuses entrées localStorage afin que vous puissiez apporter de petites modifications rapidement. Les objets restaurés sont des copies beaucoup plus précises des objets enregistrés et l'API est incroyablement simple. Par exemple:
BTW, je l'ai écrit.
la source
Je fais ce qui suit:
la source
J'aime vraiment la réponse de cdmckay , mais ça n'a pas vraiment l'air bien de vérifier la taille en temps réel: c'est tout simplement trop lent (2 secondes pour moi). Il s'agit de la version améliorée, qui est beaucoup plus rapide et plus exacte, avec également une option pour choisir la taille de l'erreur (par défaut
250,000
, plus l'erreur est petite - plus le calcul est long):Tester:
Cela fonctionne considérablement plus rapidement pour l'erreur standard; il peut également être beaucoup plus précis lorsque cela est nécessaire.
la source
J'ai condensé un test binaire dans cette fonction que j'utilise:
Il sauvegarde également le contenu avant le test, puis les restaure.
Fonctionnement: il double la taille jusqu'à ce que la limite soit atteinte ou que le test échoue. Il stocke ensuite la moitié de la distance entre le bas et le haut et soustrait / ajoute la moitié de la moitié à chaque fois (soustrayez en cas d'échec et ajoutez en cas de succès); affiner dans la valeur appropriée.
upperLimit
est de 1 Go par défaut, et limite la distance à parcourir de façon exponentielle avant de lancer la recherche binaire. Je doute que cela doive même être changé, mais je pense toujours à l'avenir. ;)Sur Chrome:
IE11, Edge et FireFox signalent également la même taille maximale (10485762 octets).
la source
localStorage.Clear()
avant et après vos testsVous pouvez utiliser le code suivant dans les navigateurs modernes pour vérifier efficacement le quota de stockage (total et utilisé) en temps réel:
la source
Usage (in Bytes): 647 , Total Quota (in Bytes): 32901464711
C'est faux: la taille totale possible est en fait de 10485762.Une fois que j'ai développé l' extension Chrome (navigateur de bureau) et testé la taille maximale réelle du stockage local pour cette raison.
Mes résultats:
Plus que l'
10240 KB
utilisation m'a renvoyé l'erreur:la source
J'ai écrit ce code simple qui teste la taille de localStorage en octets.
https://github.com/gkucmierz/Test-of-localStorage-limits-quota
Pages Github:
https://gkucmierz.github.io/Test-of-localStorage-limits-quota/
J'ai les mêmes résultats sur le chrome de bureau, l'opéra, le firefox, le brave et le chrome mobile qui est ~ 5Mbytes
Et un résultat moitié plus petit dans un safari ~ 2 Mo
la source