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


Auf meinen früheren Websites verwendete ich einen Cookie, um eine Vor-Startseite nur beim ersten Besuch anzuzeigen. Das hat super funktioniert (siehe hier zum Beispiel), aber das Verwenden von Cookies ist heute nicht so angesagt, also möchte ich es so weit wie möglich vermeiden.

Nun, meine neuen Website-Projekte haben fast immer vor-Home über Javascript gestartet (zeigt eine Modalbox), so dass ich keine Aktion auf der Serverseite tun müssen. Ich erwäge, HTML5 localStorage anstelle von Cookies zu verwenden, mit einem Rückfall auf Cookies, wenn der Browser localStorage nicht hat. Ist das eine gute Idee? Welchen Einfluss haben Usability, 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 nur in einem Browser aktiviert sind (wie Geolokalisierung). Gibt es eine Einschränkung für localStorage in einem beliebigen Browser? Gibt es einen Fall, in dem ich einen JS-Fehler bekomme, wenn localStorage verfügbar, aber für meine Site deaktiviert ist?


40
2018-05-31 10:57


Ursprung


Antworten:


Benutzerfreundlichkeit

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

Performance

Es gibt keinen merklichen Geschwindigkeitsunterschied zwischen den beiden Methoden.

sessionStorage

sessionStorage ist nur für die Sitzung dieser Browserregisterkarte gültig. Wenn Sie die Registerkarte schließen, geht die Sitzung verloren und die Daten gehen verloren. Sie ähnelt einer Sitzungsvariablen in einer beliebigen Backend-Sprache.

lokaler Speicher

localStorage wird für alle Registerkarten oder Fenster im Browser verfügbar sein und existiert, bis es vom Benutzer oder vom 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, Sie benötigen also kein Cookie. localStorage wird im Gegensatz zu einem Cookie niemals an den Server gesendet.
  2. Wenn der Benutzer die Cookies deaktiviert, funktioniert localStorage auch nicht.

Fallback-Beispiel

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

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

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


66
2018-05-31 11:09



Vergleicht man LS gegen Cookies, vergleicht man Äpfel mit Orangen.

Cookies und LS sind völlig unterschiedliche Dinge für verschiedene Zwecke. LS ist ein Werkzeug, das Ihnen erlaubt 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 ganze Sinn von Cookies ist es, mit jeder Anfrage verschickt zu werden.

In der Vergangenheit wurden Cookies oft dazu missbraucht, den lokalen Speicher zu emulieren, nur weil dies 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 benötigen, das sowohl der Client als auch der Server lesen und schreiben sollten, verwenden Sie Cookies, nicht LS.


25
2018-05-31 11:20



Ein Punkt hinzuzufügen, im Gegensatz zu Cookie normalerweise gemeinsame Cross-Protokoll, die Speicher bleiben zu gleichen Ursprungs-Politik. Als Konsequenz teilen sich Sites die gleiche Domain, aber gehostet auf anderen Protokoll teilen nicht die gespeicherten Daten.

Sagen Sie, wenn Ihre Website über http und https funktionieren soll. Wenn ein Nutzer zum Beispiel auf den Link "Kauflink" klickt, wird er auf https gesichertem Checkout landen, und die Kasse kann die zuvor auf der Website gespeicherten Daten nicht abrufen, selbst wenn sie dieselbe Domain verwenden.


5
2018-04-18 17:23



Es scheint nicht einfach zu sein, dass der Server localStorage liest. Dies kann jedoch nützlich sein, da Sie wissen, dass Ihre Daten alle auf der Client-Seite gespeichert sind, sodass Sie nicht schnüffeln müssen.

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

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

0
2018-05-31 11:02