Webspeicher - Web storage

Webspeicher , manchmal auch als DOM-Speicher ( Document Object Model Storage) bezeichnet, bietet Web-Apps Methoden und Protokolle zum Speichern clientseitiger Daten. Webspeicher unterstützt die dauerhafte Datenspeicherung, ähnlich wie Cookies, jedoch mit einer stark verbesserten Kapazität und ohne dass Informationen im HTTP-Anforderungsheader gesendet werden . Es gibt zwei Haupttypen von Webspeichern: lokaler Speicher und Sitzungsspeicher, die sich ähnlich wie dauerhafte Cookies bzw. Sitzungscookies verhalten . Web Storage ist vom World Wide Web Consortium (W3C) und WHATWG standardisiert und wird von allen gängigen Browsern unterstützt.

Merkmale

Webspeicher unterscheidet sich in einigen wesentlichen Punkten von Cookies.

Zweck
Cookies sind für die Kommunikation mit Servern bestimmt; sie werden automatisch allen Anfragen hinzugefügt und können sowohl server- als auch clientseitig aufgerufen werden. Webspeicher fällt ausschließlich in den Zuständigkeitsbereich des clientseitigen Scriptings . Webspeicherdaten werden nicht bei jeder HTTP-Anforderung automatisch an den Server übertragen, und ein Webserver kann nicht direkt in den Webspeicher schreiben. Jeder dieser Effekte kann jedoch mit expliziten clientseitigen Skripten erreicht werden, die eine Feinabstimmung der gewünschten Interaktion des Servers ermöglichen.
Speichergröße
Cookies sind auf 4 Kilobyte beschränkt. Webspeicher bietet eine weitaus größere Speicherkapazität:
Lokaler und Sitzungsspeicher
Webspeicher bietet zwei verschiedene Speicherbereiche – lokale Speicherung und Sitzungsspeicher – die sich in Umfang und Lebensdauer unterscheiden. Daten, die im lokalen Speicher abgelegt werden, sind pro Ursprung – die Kombination aus Protokoll, Hostname und Portnummer, wie in der Richtlinie für denselben Ursprung definiert . Die Daten stehen allen Skripten zur Verfügung, die von Seiten desselben Ursprungs geladen wurden, in denen die Daten zuvor gespeichert wurden, und bleiben auch nach dem Schließen des Browsers erhalten. Daher leidet der Webspeicher nicht unter Problemen mit der schwachen Integrität von Cookies und der schwachen Vertraulichkeit, die in den RFC  6265- Abschnitten 8.5 und 8.6 beschrieben sind. Der Sitzungsspeicher erfolgt sowohl pro Ursprung als auch pro Instanz (pro Fenster oder pro Registerkarte) und ist auf die Lebensdauer der Instanz beschränkt. Der Sitzungsspeicher soll es ermöglichen, dass separate Instanzen derselben Web-App in verschiedenen Fenstern ausgeführt werden, ohne sich gegenseitig zu stören, ein Anwendungsfall, der von Cookies nicht gut unterstützt wird.
Schnittstelle und Datenmodell
Webspeicher bietet eine bessere programmgesteuerte Schnittstelle als Cookies, da er ein assoziatives Array- Datenmodell bereitstellt, bei dem die Schlüssel und Werte sowohl Zeichenfolgen sind . Eine zusätzliche API für den Zugriff auf strukturierte Daten wird von der W3C Web Applications Working Group in Erwägung gezogen.

Verwendungszweck

Browser, die Webspeicher unterstützen, haben die globalen Objekte sessionStorageund werden localStorageauf Fensterebene deklariert. Der folgende JavaScript- Code kann in diesen Browsern verwendet werden, um das Webspeicherverhalten auszulösen:

// Store value on browser for duration of the session
sessionStorage.setItem('key', 'value');

// Retrieve value (gets deleted when browser is closed and re-opened) ...
alert(sessionStorage.getItem('key'));

// Store value on the browser beyond the duration of the session
localStorage.setItem('key', 'value');

// Retrieve value (persists even after closing and re-opening the browser)
alert(localStorage.getItem('key'));

Über die Storage API können nur Strings gespeichert werden. Der Versuch, einen anderen Datentyp zu speichern, führt in den meisten Browsern zu einer automatischen Konvertierung in einen String. Die Konvertierung in JSON ermöglicht jedoch eine effektive Speicherung von JavaScript-Objekten.

// Store an object instead of a string
localStorage.setItem('key', {name: 'value'});
alert(typeof localStorage.getItem('key')); // string

// Store an integer instead of a string
localStorage.setItem('key', 1);
alert(typeof localStorage.getItem('key')); // string

// Store an object using JSON
localStorage.setItem('key', JSON.stringify({name: 'value'}));
alert(JSON.parse(localStorage.getItem('key')).name); // value

Nomenklatur

Der W3C-Entwurf trägt den Titel "Web Storage". "DOM-Speicher" ist auch ein häufig verwendeter Name, obwohl er immer seltener wird; zum Beispiel wurden die "DOM Storage"-Webartikel der Mozilla- und Microsoft-Entwicklerseiten durch "Web Storage"-Artikel ersetzt.

Das "DOM" im DOM-Speicher bezieht sich nicht buchstäblich auf das Document Object Model . Laut W3C "wird der Begriff DOM verwendet, um sich auf den API-Satz zu beziehen, der Skripten in Webanwendungen zur Verfügung gestellt wird, und impliziert nicht unbedingt die Existenz eines tatsächlichen Document-Objekts ..."

Webspeicherverwaltung

Die Speicherung von Webspeicherobjekten ist in aktuellen Versionen aller unterstützenden Webbrowser standardmäßig aktiviert, wobei die Browseranbieter den Benutzern Möglichkeiten bieten, Webspeicher nativ zu aktivieren oder zu deaktivieren oder den Webspeicher-"Cache" zu löschen. Ähnliche Kontrollen über den Webspeicher sind auch über Browsererweiterungen von Drittanbietern verfügbar . Jeder Browser speichert Webspeicherobjekte unterschiedlich:

  • Firefox speichert Webspeicherobjekte in einer SQLite- Datei, die webappsstore.sqliteim Profilordner des Benutzers aufgerufen wird .
  • Google Chrome zeichnet Webspeicherdaten in einer SQLite- Datei im Benutzerprofil auf. Der Unterordner mit dieser Datei ist " \AppData\Local\Google\Chrome\User Data\Default\Local Storage" unter Windows und " ~/Library/Application Support/Google/Chrome/Default/Local Storage" unter macOS .
  • Der Webspeicher von Opera befindet sich je nach Opera-Version entweder in " \AppData\Roaming\Opera\Opera\sessions\autosave.win" oder " \AppData\Local\Opera\Opera\pstorage\".
  • Der Webspeicher von Internet Explorer ist " \AppData\LocalLow\Microsoft\Internet Explorer\DOMStorage".

Siehe auch

Verweise

Externe Links