Eine neue Optimierung in Chrome verbessert die Art und Weise, wie IndexedDB-Daten auf der Festplatte gespeichert werden. Bei dieser Verbesserung geht es darum, wie große Werte im Speichersystem von Chrome verwaltet werden. Dazu wird die Komprimierung bestimmter auf der Festplatte 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 der Festplatte zu speichern. LevelDB ist eine schnelle Schlüssel/Wert-Speicherbibliothek, hat aber Probleme, wenn einzelne Werte die Größe einer Datenbankseite überschreiten. Um dieses Problem zu beheben, speichert Chrome seit 2017 Werte, die größer als eine einzelne Seite sind, als einfache Dateien auf der Festplatte neben der Datenbankdatei.
Speicher ab Version 129
Komprimierung großer Werte
Im Gegensatz zu den Inhalten, die direkt in der LevelDB-Datenbank gespeichert sind und vor dem Schreiben auf die Festplatte komprimiert und nach dem Lesen dekomprimiert werden, wurden die als einfache Dateien gespeicherten großen Dateien nicht komprimiert. Mit dem neuen Update komprimiert Chrome diese großen Dateien jetzt mit der Snappy-Echtzeitkomprimierungsbibliothek, was zu erheblichen Speicherplatzeinsparungen führt. Das ist besonders effektiv bei strukturierten Daten wie großen Arrays von JavaScript-Werten, XML oder JSON. Sie ist nicht effektiv für große, aber bereits komprimierte Mediendateien oder, weniger häufig, wenn die Website bereits selbst zippt und entzippt.
Auswirkungen auf die Speichereffizienz
Wenn die Komprimierung die Dateigröße auf unter die Größe einer LevelDB-Seite reduziert, werden die Daten wieder in LevelDB verschoben. Diese Änderung spart nicht nur Speicherplatz, sondern reduziert auch die E/A-Vorgänge auf dem Laufwerk, was die Gesamtleistung verbessert.
Snappy-Komprimierungsalgorithmus
Das Chrome-Team hat sich für die Komprimierung für Snappy entschieden, weil es für Geschwindigkeit und nicht für maximale Komprimierung optimiert ist. Es ist schnell genug, um bei der Komprimierung oder Dekomprimierung keine messbaren Leistungseinbußen zu verursachen.
Leistungsverbesserungen
Die Komprimierung und Dekomprimierung werden im Renderer-Prozess verarbeitet, der Teil der Multiprozessarchitektur 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 dieses Update einige Vorgänge aufgrund der reduzierten IPC (Inter-Process Communication) und Festplatten-E/A zwei- bis dreimal schneller als zuvor ausführen kann. In der Praxis werden bei den Messungen des Chrome-Teams 1 MB große Nutzlasten mit strukturierten Daten in etwa einem Viertel der Zeit von der Festplatte auf die Seite übertragen (mit hoher Variabilität je nach Gerätehardware und Systemaktivität).
Auswirkungen auf Entwickler und Nutzer
Diese Änderungen sind für Entwickler und Nutzer vollständig transparent. Nutzer werden jedoch möglicherweise eine verbesserte Leistung und eine geringere Speichernutzung feststellen.
- Speicherplatzersparnis:Die Komprimierung wird nur auf neue Daten angewendet, die nach dieser Aktualisierung gespeichert werden. Die Speicherplatzersparnis lässt sich indirekt über Web-APIs wie
navigator.storage.estimate()oder in den Chrome-Entwicklertools im Bereich Speicher unter dem Tab Anwendung beobachten. - 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.
Mit diesem Update wird die Effizienz von Chrome bei der Verwaltung großer IndexedDB-Werte verbessert. Das spart sowohl Speicherplatz als auch Zeit, ohne die Leistung zu beeinträchtigen. Dies 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 Chrome-Leistung und der Speichermechanismen profitieren und so für eine reibungslosere und effizientere Nutzererfahrung sorgen.
Danksagungen
Dieses Dokument wurde von Evan Stade und Rachel Andrew geprüft.