Effizienterer IndexedDB-Speicher in Chrome

Durch eine neue Optimierung in Chrome wird die Speicherung von IndexedDB-Daten auf dem Laufwerk verbessert. Bei dieser Verbesserung liegt der Schwerpunkt darauf, wie große Werte im Speichersystem von Chrome verwaltet werden. Dazu wird die Komprimierung bestimmter auf dem Laufwerk gespeicherter Dateien eingeführt. In diesem Artikel werden die wichtigsten Punkte dieser Aktualisierung zusammengefasst.

Speichermechanismus von Chrome vor Version 129

Chrome verwendet LevelDB, um IndexedDB-Daten auf dem Laufwerk zu speichern. LevelDB ist eine schnelle Key-Value-Speicherbibliothek, die jedoch Probleme hat, wenn einzelne Werte die Größe einer Datenbankseite überschreiten. Seit 2017 speichert Chrome Werte, die größer als eine Seite sind, als normale Dateien auf dem Laufwerk neben der Datenbankdatei.

Speicher ab Version 129

Komprimierung großer Werte

Im Gegensatz zu den Inhalten, die direkt in der LevelDB-Datenbank gespeichert werden, die vor dem Schreiben auf die Festplatte komprimiert und nach dem Lesen dekomprimiert werden, wurden die großen Dateien, die als normale Dateien gespeichert wurden, nicht komprimiert. Mit dem neuen Update komprimiert Chrome diese großen Dateien jetzt mit der Snappy-Realtime-Komprimierungsbibliothek. Das führt zu einer erheblichen Einsparung von Speicherplatz. Dies ist besonders effektiv bei strukturierten Daten wie großen Arrays von JavaScript-Werten, XML oder JSON. Es ist nicht effektiv für große, aber bereits komprimierte Mediendateien oder, seltener, wenn die Website bereits eigene ZIP-Dateien erstellt und entpackt.

Auswirkungen auf die Speichereffizienz

Wenn die Dateigröße durch die Komprimierung unter die Größe einer LevelDB-Seite sinkt, werden die Daten wieder in LevelDB verschoben. Durch diese Änderung wird nicht nur Speicherplatz gespart, sondern auch die Anzahl der Laufwerk-E/A-Vorgänge reduziert, was die Gesamtleistung verbessert.

Snappy-Komprimierungsalgorithmus

Das Chrome-Team hat sich für Snappy entschieden, da es nicht für die maximale Komprimierung, sondern für die Geschwindigkeit optimiert ist. Sie ist so schnell, dass bei der Komprimierung oder Dekomprimierung keine messbaren Leistungseinbußen auftreten.

Leistungsverbesserungen

Die Komprimierung und Dekomprimierung werden im Renderer-Prozess ausgeführt, der Teil der mehrstufigen Architektur von Chrome ist. Dadurch wird die Größe der an den Browserprozess gesendeten Nachrichten reduziert, was zu weiteren Leistungsverbesserungen führt. Synthetische Benchmarks haben gezeigt, dass durch dieses Update einige Vorgänge aufgrund der reduzierten IPC (Inter-Process Communication) und der reduzierten Laufwerk-E/A zwei- bis dreimal schneller als zuvor ausgeführt werden können. In der Praxis werden bei den Messungen des Chrome-Teams Nutzlasten mit 1 MB strukturierten Daten in etwa einem Viertel der Zeit vom Laufwerk an die Seite übertragen (mit hoher Variabilität je nach Gerätehardware und Systemaktivität).

Auswirkungen auf Entwickler und Nutzer

Diese Änderungen sind sowohl für Entwickler als auch für Nutzer völlig transparent. Nutzer können jedoch Leistungsverbesserungen und eine geringere Speichernutzung feststellen.

  • Speicherplatzeinsparung:Die Komprimierung wird nur auf neue Daten angewendet, die nach diesem Update gespeichert werden. Die Speichereinsparungen können indirekt mithilfe von Web-APIs wie navigator.storage.estimate() oder im Bereich Speicher in den Chrome-Entwicklertools unter Anwendung beobachtet werden.
  • Funktion testen: Entwickler können dieses Verhalten in Vorabversionen von Chrome (vor Version 129) testen, indem sie die Funktion mit dem Flag --enable-features="IndexedDBCompressValuesWithSnappy" aktivieren.

Dieses Update verbessert die Effizienz von Chrome bei der Verwaltung großer IndexedDB-Werte. So sparen Sie sowohl Speicherplatz als auch Zeit, ohne dass die Leistung beeinträchtigt wird. Das ist eine erhebliche Verbesserung bei der Speicherung und dem Zugriff auf Daten im Browser. Wenn Entwickler diese Änderungen kennen, können sie von den laufenden Bemühungen zur Optimierung der Leistung und Speichermechanismen von Chrome profitieren und so eine reibungslosere und effizientere Nutzererfahrung ermöglichen.

Danksagungen

Dieses Dokument wurde von Evan Stade und Rachel Andrew geprüft.