Gibt es Nachteile bei der Verwendung von localStorage anstelle von Cookies?

Lesezeit: 5 Minuten

Benutzer-Avatar
Fabien Quatravaux

Auf meinen früheren Websites habe ich ein Cookie verwendet, um nur beim ersten Besuch eine Pre-Homepage anzuzeigen. Das hat super funktioniert (siehe zum Beispiel hier), aber die Verwendung von Cookies ist heute nicht mehr so ​​​​angesagt, daher möchte ich sie so weit wie möglich vermeiden.

Jetzt haben meine neuen Website-Projekte fast immer Pre-Home über Javascript gestartet (zeigt eine Modalbox), sodass ich auf der Serverseite keine Maßnahmen ergreifen muss. Ich erwäge, HTML5 localStorage anstelle von Cookies zu verwenden, mit einem Fallback auf Cookies, wenn der Browser nicht über localStorage verfügt. Ist das eine gute Idee? Was sind die Auswirkungen in Bezug auf Benutzerfreundlichkeit, Datenschutz und Website-Performance?

Die Verwendung von localStorage verbessert die Benutzerfreundlichkeit für Benutzer, die Cookies deaktiviert haben. Aber ich weiß, dass einige HTML5-Funktionen in einigen Browsern nur optional sind (wie Geolokalisierung). Gibt es eine solche Einschränkung für localStorage in jedem Browser? Gibt es einen Fall, in dem ich einen JS-Fehler erhalte, wenn localStorage verfügbar, aber für meine Site deaktiviert ist?

Benutzer-Avatar
Vinicius Moraes

Benutzerfreundlichkeit

Der Benutzer wird nicht wissen, ob Sie localStorage oder ein Cookie verwenden. Wenn ein Benutzer Cookies deaktiviert, funktioniert localStorage ebenfalls nicht.

Leistung

Es gibt keinen merklichen Geschwindigkeitsunterschied zwischen den beiden Methoden.

Sitzungsspeicher

sessionStorage gilt nur für die Sitzung dieses Browser-Tabs. Wenn Sie die Registerkarte schließen, geht die Sitzung verloren und die Daten gehen ebenfalls verloren, es ist ähnlich wie bei einer Sitzungsvariablen in jeder Backend-Sprache.

lokaler Speicher

localStorage steht für alle Registerkarten oder Fenster im Browser zur Verfügung und bleibt bestehen, bis es vom Benutzer oder dem Programm gelöscht wird. Im Gegensatz zu einem Cookie können Sie kein Ablaufdatum festlegen. localStorage hat auch ein viel größeres Speicherlimit.

Deine Fragen

  1. Sie verwenden diese Datenserverseite nicht, daher benötigen Sie kein Cookie. localStorage wird im Gegensatz zu einem Cookie niemals an den Server gesendet.
  2. Wenn der Benutzer die Cookies deaktiviert, funktioniert auch localStorage nicht.

Fallback-Beispiel

Sie können ein Modernizr verwenden, um zu überprüfen, ob localStorage verfügbar ist, und falls nicht, stattdessen ein Cookie speichern.

if (Modernizr.localstorage) {
    // supports HTML5 Storage :D
} else {
    // does not support HTML5 Storage :(
}

Sie können auch auf Modernizr verzichten und den Check verwenden typeof Storage !== 'undefined'.

  • Diese Antwort hat mehr damit zu tun sessionStorage gegen localStorage als irgendetwas damit zu tun cookies wie das OP wollte

    – nur.ein weiterer.Programmierer

    31. Mai 2013 um 11:27 Uhr

  • @just.another.programmer Ich weiß nicht, ob Sie seine Frage gelesen haben, aber er fragt nicht nach Cookies, er schrieb “Ich muss auf der Serverseite nichts unternehmen”, also braucht er kein Cookie benötigen einen localStorage oder einen sessionStorage

    – Vinicius Moraes

    31. Mai 2013 um 11:30 Uhr

  • Um die Unterstützung von localStorage zu erkennen (um eine Fallback-Lösung bereitzustellen), verwende ich einfach if(window.localStorage).

    – Fabien Quatravaux

    31. Mai 2013 um 14:16 Uhr

  • @FabienQuatravaux Der Benutzer wird keinen Unterschied sehen, denn wenn Sie die Cookies deaktiviert haben, cookies wird nicht funktionieren und localStorage auch nicht. Es gibt keine Einschränkung opt-in für lokalen Speicher

    – Vinicius Moraes

    31. Mai 2013 um 14:17 Uhr


  • Du hast Recht ! Zumindest in Chrome wird durch das Deaktivieren von Cookies auch localStorage deaktiviert. Und ich habe mich geirrt, denn wenn “Cookies” deaktiviert sind, wird darauf zugegriffen window.localStorage würde bei der Verwendung eine Ausnahme auslösen Modernizr.localstorage wird nur false zurückgeben. Vielen dank für Deine Hilfe.

    – Fabien Quatravaux

    31. Mai 2013 um 14:28 Uhr

Benutzer-Avatar
georg

Der Vergleich von LS mit Keksen vergleicht Äpfel mit Birnen.

Cookies und LS sind völlig unterschiedliche Dinge für unterschiedliche Zwecke. LS ist ein Tool, mit dem Sie Klient (Javascript-Code), um seine Daten lokal zu speichern, ohne sie an den Server zu übertragen. Cookies ist ein Werkzeug für die Client-Server-Kommunikation. Der Sinn von Cookies ist bei jeder Anfrage zu übermitteln.

In der Vergangenheit wurden Cookies oft missbraucht, um den lokalen Speicher zu emulieren, nur weil es die einzige Möglichkeit für eine Javascript-Anwendung war, etwas auf die Festplatte des Clients zu schreiben. Aber im Allgemeinen ist LS kein Ersatz für Cookies. Wenn Sie also etwas brauchen, das sowohl der Client als auch der Server lesen und schreiben sollen, verwenden Sie Cookies, nicht LS.

  • Ich möchte LocalStorage und Cookies nicht vergleichen Im Algemeinen, was dumm ist, aber nur in dem Fall, den ich hier beschrieben habe. Wie gesagt, ich brauche nichts, was auf den Server zurückgesendet werden muss, also sind sowohl Cookies als auch LocalStorage in Ordnung. Aber welches ist das beste?

    – Fabien Quatravaux

    31. Mai 2013 um 14:02 Uhr


  • @FabienQuatravaux: Wenn Sie serverseitig nichts tun müssen, ist LS in Ordnung.

    – georg

    31. Mai 2013 um 14:08 Uhr

  • Komisch, und jetzt wird es wahrscheinlich umgekehrt mit lokalem Speicher missbraucht …

    – Sommersl

    6. Februar 2014 um 18:39 Uhr

  • Das macht für mich mehr Sinn.

    – Ejaz Karim

    12. April 2018 um 11:19 Uhr

  • LS sind eher mit Sitzungsvariablen vergleichbar; eine Möglichkeit, Daten seitenübergreifend (oder Einstellungen oder Präferenzen für einen Benutzer) zu speichern, ohne sie in einer Datenbank zu speichern.

    – Daniel

    14. Juli 2020 um 21:22 Uhr

Ein Punkt, der hinzugefügt werden muss, im Gegensatz zu Cookies, die normalerweise protokollübergreifend geteilt werden, halten sich die Speicher an die Same-Origin-Richtlinie. Infolgedessen teilen sich Websites dieselbe Domain, die jedoch auf unterschiedlichen Protokollen gehostet werden, und teilen die gespeicherten Daten nicht.

Sagen Sie, ob Ihre Website über http und https funktionieren muss. Wenn der Benutzer beispielsweise auf den „Kauflink“ klickt, landet er auf der https-gesicherten Kasse, dann kann die Kasse die zuvor auf der HTTP-Site gespeicherten Daten nicht abrufen, selbst wenn sie dieselbe Domain teilen.

Benutzer-Avatar
Isaak

Es sieht nicht einfach für den Server aus, den localStorage zu lesen. Das kann sich jedoch als nützlich erweisen, da Sie wissen, dass Ihre Daten alle clientseitig sind, wodurch sie vor Ausspähen geschützt sind.

Cookies können nicht überschrieben, nur hinzugefügt und gelesen werden:

alert(document.cookie);
document.cookie = "nope";
alert(document.cookie);

1283820cookie-checkGibt es Nachteile bei der Verwendung von localStorage anstelle von Cookies?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy