Der Speicherstandard definiert eine API für nichtflüchtigen Speicher und Kontingentschätzungen und die Speicherarchitektur der Plattform. Wir führen eine API ein, die eine dauerhafte Speicherbereinigung bei dass die Speicherauslastung besser vorhersehbar ist. Sie ist ab Chromium 122 verfügbar.
Welches Problem löst der Speicherstandard?
Wenn dem Nutzer der Speicherplatz auf seinem Gerät ausgeht, werden die mit APIs wie
IndexedDB oder localStorage
gehen verloren, ohne dass der Nutzer eingreifen kann. Eine Möglichkeit,
besteht darin, die Funktion
persist()
-Methode des
StorageManager
-Schnittstelle. Es fordert gleichzeitig den Endnutzer um die Berechtigung an und ändert die
dauerhaft verfügbar sein:
const persisted = await navigator.storage.persist();
if (persisted) {
/* Storage will not be cleared except by explicit user action. */
}
Bei dieser Methode geht es um alles oder nichts. Es gibt keine Möglichkeit, mehr auszudrücken. Anforderungen an die Persistenz. Es ist alles ein Storage-Bucket.
Storage Buckets API
Die Kernidee der Storage Buckets API ist Websites die Möglichkeit geben, mehrere Storage-Buckets zu erstellen, in denen der Browser Löschen Sie jeden Bucket unabhängig von anderen Buckets. So können Entwickler die Entfernung angeben damit die wertvollsten Daten nicht gelöscht werden.
Anwendungsbeispiel
Stellen Sie sich eine E-Mail-Anwendung vor, um zu zeigen, wo sich Storage-Buckets als nützlich erweisen könnten. Das wäre nicht verzeihbar, wenn die App die nicht gesendeten Entwürfe des Nutzers, die nur auf dem Client vorhanden sind, verloren hat. Wenn dagegen die auf einem Server gespeichert sind, sind für den Nutzer wahrscheinlich einige der ältesten E-Mails im Posteingang für vom Client entfernt werden, wenn dessen Browser unter starker Speicherauslastung steht.
<ph type="x-smartling-placeholder">Storage Buckets API verwenden
Neuen Storage-Bucket erstellen
Mit der Methode open()
kann ein neuer Storage-Bucket für StorageBucketManager
erstellt werden.
.
// Create a storage bucket for emails that are synchronized with the
// server.
const inboxBucket = await navigator.storageBuckets.open('inbox');
Persistenten neuen Storage-Bucket erstellen
Damit der Storage-Bucket dauerhaft gespeichert wird, können Sie die Optionen durability
und persisted
übergeben.
Argumente für die Methode open()
:
persisted
legt fest, ob der Storage-Bucket beibehalten werden soll. Die zulässigen Werte sind entwederfalse
(Standardeinstellung) odertrue
.durability
stellt dem Browser einen Hinweis bereit, mit dem die Schreibleistung gegen eine verringert das Risiko von Datenverlusten bei Stromausfällen. Die zulässigen Werte sind'relaxed'
(Standard) oder'strict'
:'strict'
-Buckets versuchen, das Risiko eines Datenverlusts bei einem Stromausfall zu minimieren. Diese kann an folgenden Stellen zurückgegeben werden: die Kosten für eine geringere Leistung, d. h. das Ausführen von Schreibvorgängen kann länger dauern, Gesamtleistung des Systems, können den Akku stärker beanspruchen und das Speichergerät belasten schneller.'relaxed'
Buckets werden möglicherweise „vergessen“ Schreibvorgänge, die in den letzten Sekunden abgeschlossen wurden, wenn ein zu einem Stromausfall führt. Im Gegenzug kann das Schreiben von Daten in diese Buckets eine bessere Leistung erzielen. Außerdem kann der Akku länger durchhalten und Gerätelebensdauer. Außerdem führt ein Stromausfall nicht häufiger zu Datenbeschädigungen als'strict'
Buckets.
// Create a storage bucket for email drafts that only exist on the client.
const draftsBucket = await navigator.storageBuckets.open('drafts', {
durability: 'strict', // Or `'relaxed'`.
persisted: true, // Or `false`.
});
Über einen Storage-Bucket auf die Storage APIs zugreifen
Jeder Storage-Bucket ist Storage-APIs zugeordnet. Beispiel:
IndexedDB, der
Cache-Schnittstelle oder den
Datei-Schnittstelle. Diese Speicher-APIs funktionieren gemäß
nur dass der Einstiegspunkt von der StorageBucket
-Schnittstelle stammt. Beispiel:
StorageBucket.indexedDB
.
const inboxDb = await new Promise(resolve => {
const request = inboxBucket.indexedDB.open('messages');
request.onupgradeneeded = () => { /* migration code */ };
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
Fehler in Storage-Buckets in den Entwicklertools beheben
Storage-Buckets in einer eigenen Baumstruktur prüfen: Anwendung > Speicher.