Web-Entwicklung: localStorage vs. zwischengespeichertes HTTP

10

Nehmen wir an, ich habe einen Webserver, der auf ein GET mit .json -Datei reagiert. Die Antwort auf diesen GET gibt an, dass der Browser die Antwort für 5 Jahre zwischenspeichert.

Sagen wir auch, ich habe eine Webseite, die diese GET-Anfrage für die JSON-Daten beim Laden der Seite durchführt. Wenn die Antwort zurückkommt, werden die JSON-Daten in localStorage eingefügt.

An dieser Stelle, wenn ich diese JSON-Daten wieder abrufen möchte, was schneller sein wird:

  1. Abrufen von localStorage
  2. Ausführen einer weiteren Ajax-GET-Anfrage (wobei der Browser die Anfrage nicht wirklich ausführen wird - stattdessen wird auf den Browser-Cache zugegriffen)

Können Sie es mit einem automatisierten Test oder Beispiel beweisen?

Warum ist deine Antwort richtig?

    
FarahBoBara 21.08.2011, 06:07
quelle

3 Antworten

8

Ich denke, Sie stellen die falsche Frage. Was während einer aktiven Sitzung schneller ist, ist im Grunde irrelevant, weil beide lokal gespeichert werden und das lokale Nachschlagen fast augenblicklich ist (gegenüber der Fern-Suche). (Ein Nachteil: Nicht alle Browser verlassen sich auf die Caching-Header, aber normalerweise neigt sie eher zu Über-Caching als zu Caching.)

In Ihrer Beispielsituation wird jedoch davon ausgegangen, dass der Cache des Browsers niemals gelöscht wird. Das ist im Allgemeinen falsch: Der Benutzer kann nicht nur den Cache löschen (oder automatisch löschen), sondern der Browser selbst kann entscheiden, die zwischengespeicherten Daten Ihrer Website nach Belieben zu entfernen (abhängig vom verfügbaren Speicherplatz). p>

Stattdessen sollten Sie über die Langlebigkeit der Daten nachdenken, und darüber, wie regelmäßig der Benutzer danach suchen wird.

Wenn diese Informationen nur gelegentlich zugänglich sind, sollten Sie sich auf den integrierten Caching-Mechanismus des Browsers verlassen. Dies ermöglicht es dem Browser, es zu entfernen, wenn es nicht mehr benötigt wird.

Wenn die Daten jedoch regelmäßig geladen werden oder bei jedem Besuch auf der Site benötigt werden, sollten Sie localStorage verwenden. Lokaler Speicher wird nicht automatisch mit dem Cache gelöscht und wird in der Regel nur geleert, wenn der Benutzer die Cookies für diese Website löscht. Dies ermöglicht es, die Informationen viel länger zu behalten, selbst wenn die Website nicht regelmäßig genug besucht wird, um den Cache aktualisiert zu halten. Aber Sie werden jetzt plötzlich für die Pflege dieser Informationsdatenbank verantwortlich sein.

Schließlich die wichtigste Frage: Als Entwickler ist es das Kosten-Nutzen-Verhältnis, eine komplexere localStorage -basierte Lösung zu entwickeln? Mit anderen Worten, werden Sie genug Nutzen für den Endbenutzer sehen, der eine 1-2s-Nachforschung zwischenspeichert, oder sprechen Sie über eine bedeutende Menge an Information, wo der Benutzer eine Zunahme von 30s + sehen wird.

  

Als Beispiel habe ich für eine große, komplexe Webanwendung, die ich vor einiger Zeit entwickelt habe, localStorage verwendet, um die große Anzahl von JS-Bibliotheken zu speichern. Beim erneuten Besuchen der Site wurden sie einfach von der lokalen Kopie analysiert (nachdem der Hash überprüft wurde). Diese Lösung ermöglichte einer großen Anzahl von Browsern eine massive Reduzierung der Startzeit, selbst wenn der Cache gelöscht wurde. (Ich sage nicht, das ist ein guter Zweck, aber es funktionierte zu der Zeit.)

    
OverZealous 21.08.2011 07:14
quelle
1

Beide Quellen behaupten, dass localStorage den Browser-Cache in der Geschwindigkeit schlägt.

Hier geht es darum, JavaScript-Dateien von localStorage zu laden. Der Code ist winzig. Sie können ihn in meinem Github-Projekt Ссылка abrufen oder den Code aus dem folgenden Beispiel verwenden .

Die vollständige Bibliothek:

%Vor%

Aufruf der Bibliothek

%Vor%     
select 08.03.2015 21:49
quelle
-3

Unterschiede, wenn einer dieser beiden Ansätze in modernen UAs (Browsern) vernachlässigbar sein sollte.

Warum meine Antwort richtig ist, fragen Sie? Weil ich diese beiden Mechanismen implementiert habe.

    
c-smile 21.08.2011 06:26
quelle