Da localStorage
(derzeit) nur Zeichenfolgen als Werte unterstützt werden und die Objekte dazu stringifiziert (als JSON-Zeichenfolge gespeichert) werden müssen, bevor sie gespeichert werden können, gibt es eine definierte Einschränkung hinsichtlich der Länge der Werte.
Weiß jemand, ob es eine Definition gibt, die für alle Browser gilt?
javascript
html
local-storage
Codekie
quelle
quelle
Antworten:
Zitat aus dem Wikipedia-Artikel über Web Storage :
Und auch aus einem Artikel von John Resig [veröffentlicht im Januar 2007]:
quelle
domain
(origin
) 5 MB auf jedem einzelnen Client speichern kann. Die Daten werden auf dem Client-Computer gespeichert. DerlocalStorage
Mechanismus interagiert in keiner Weise zwischen Clients.http://example.com
undhttps://example.com
sind nicht der gleiche Ursprung (verschiedene Schemata).http://example.com
undhttp://www.example.com
sind nicht der gleiche Ursprung (verschiedene Hosts).http://example.com
undhttp://example.com:8080
sind nicht der gleiche Ursprung (verschiedene Ports). HTH. :-)Eigentlich hat Opera kein Limit von 5 MB. Es bietet die Möglichkeit, das Limit zu erhöhen, da Anwendungen mehr erfordern. Der Benutzer kann sogar "Unbegrenzter Speicherplatz" für eine Domain auswählen.
Sie können die lokalen Speichergrenzen / -kontingente einfach selbst testen .
quelle
UCS-2
. Obwohl es ähnlich ist,UFT16
gibt es einige sehr wichtige Unterschiede ... hauptsächlich um die Tatsache, dass UCS-2 älter als UFT ist.Hier ist ein einfaches Skript, um das Limit herauszufinden:
Hier ist der Kern , JSFiddle und Blog-Beitrag .
Das Skript testet das Einstellen immer größerer Textzeichenfolgen, bis der Browser eine Ausnahme auslöst. Zu diesem Zeitpunkt werden die Testdaten gelöscht und ein Größenschlüssel in localStorage festgelegt, in dem die Größe in Kilobyte gespeichert wird.
quelle
Suchen Sie die maximale Länge einer einzelnen Zeichenfolge, in der gespeichert werden kann
localStorage
Dieses Snippet ermittelt die maximale Länge eines Strings, der
localStorage
pro Domain gespeichert werden kann .Beachten Sie, dass die Länge einer Zeichenfolge in JavaScript begrenzt ist. Wenn Sie die maximale Datenmenge anzeigen möchten, die gespeichert werden kann,
localStorage
wenn sie nicht auf eine einzelne Zeichenfolge beschränkt ist, können Sie den Code in dieser Antwort verwenden .Bearbeiten: Stack-Snippets werden nicht unterstützt
localStorage
, daher hier ein Link zu JSFiddle .Ergebnisse
Chrome (45.0.2454.101): 5242878 Zeichen
Firefox (40.0.1): 5242883 Zeichen
Internet Explorer (11.0.9600.18036) :
16386122066122070 ZeichenIch erhalte bei jedem Lauf in Internet Explorer unterschiedliche Ergebnisse.
quelle
Mobile Browser:
Desktop-Browser:
Referenzlink
quelle
Gehen Sie nicht davon aus, dass 5 MB verfügbar sind. Die Kapazität von localStorage variiert je nach Browser. Die häufigsten Werte sind 2,5 MB, 5 MB und unbegrenzt. Quelle: http://dev-test.nemikor.com/web-storage/support-test/
quelle
Sie möchten keine großen Objekte zu einem einzigen localStorage-Eintrag zusammenfassen. Das wäre sehr ineffizient - das Ganze müsste jedes Mal analysiert und neu codiert werden, wenn sich einige Details geringfügig ändern. Außerdem kann JSON nicht mehrere Querverweise innerhalb einer Objektstruktur verarbeiten und löscht viele Details, z. B. den Konstruktor, nicht numerische Eigenschaften von Arrays, die Inhalte eines spärlichen Eintrags usw.
Stattdessen können Sie Rhaboo verwenden . Es speichert große Objekte mit vielen localStorage-Einträgen, sodass Sie schnell kleine Änderungen vornehmen können. Die wiederhergestellten Objekte sind viel genauere Kopien der gespeicherten und die API ist unglaublich einfach. Z.B:
Übrigens habe ich es geschrieben.
quelle
Ich mache folgendes:
quelle
Ich mag die Antwort von cdmckay sehr , aber es sieht nicht wirklich gut aus, die Größe in Echtzeit zu überprüfen: Sie ist einfach zu langsam (2 Sekunden für mich). Dies ist die verbesserte Version, die viel schneller und genauer ist, auch mit der Option zu wählen, wie groß der Fehler sein kann (Standard
250,000
: Je kleiner der Fehler - desto länger ist die Berechnung):Zu testen:
Dies funktioniert für den Standardfehler erheblich schneller. bei Bedarf kann es auch viel genauer sein.
quelle
Ich habe einen Binärtest in diese Funktion zusammengefasst, die ich verwende:
Außerdem wird der Inhalt vor dem Testen gesichert und anschließend wiederhergestellt.
So funktioniert es: Es verdoppelt die Größe, bis das Limit erreicht ist oder der Test fehlschlägt. Es speichert dann die Hälfte des Abstandes zwischen niedrig und hoch und subtrahiert / addiert jedes Mal die Hälfte der Hälfte (subtrahiert bei Misserfolg und addiert Erfolg); Honen in den richtigen Wert.
upperLimit
ist standardmäßig 1 GB groß und begrenzt nur, wie weit nach oben exponentiell gescannt werden soll, bevor die binäre Suche gestartet wird. Ich bezweifle, dass dies überhaupt geändert werden muss, aber ich denke immer voraus. ;)Auf Chrome:
IE11, Edge und FireFox melden ebenfalls dieselbe maximale Größe (10485762 Byte).
quelle
localStorage.Clear()
vor und nach Ihrem TestIn modernen Browsern können Sie den folgenden Code verwenden, um das Speicherkontingent (gesamt und verwendet) in Echtzeit effizient zu überprüfen:
quelle
Usage (in Bytes): 647 , Total Quota (in Bytes): 32901464711
Das ist falsch: Die mögliche Gesamtgröße ist tatsächlich 10485762.Einmal habe ich die Chrome- Erweiterung (Desktop-Browser) entwickelt und aus diesem Grund die tatsächliche maximale Größe des lokalen Speichers getestet .
Meine Ergebnisse:
Mehr als die
10240 KB
Verwendung gab mir den Fehler zurück:quelle
Ich habe diesen einfachen Code geschrieben, der die Größe von localStorage in Bytes testet.
https://github.com/gkucmierz/Test-of-localStorage-limits-quota
Github-Seiten:
https://gkucmierz.github.io/Test-of-localStorage-limits-quota/
Ich habe die gleichen Ergebnisse auf Desktop-Chrom, Oper, Firefox, mutigem und mobilem Chrom, das ~ 5 MB groß ist
Und halb kleiner ergibt Safari ~ 2Mbytes
quelle