Nicht jeder Speicher ist gleich: Jetzt neu: Storage-Buckets

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">
</ph> Benutzeroberfläche der E-Mail-App
E-Mail-App mit separaten Storage-Buckets für Posteingang und Entwürfe. (Dies entspricht nicht unbedingt der Funktionsweise von Gmail.)

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 entweder false (Standardeinstellung) oder true.
  • 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.

Vorher und nach der Aktivierung der Baumstruktur der Storage-Buckets im Bereich „Speicher“.

Nützliches Infomaterial