Tout l'espace de stockage ne se valent pas: découvrez les buckets de stockage

La norme de stockage définit une API de stockage persistant les estimations de quota et l'architecture de stockage de la plate-forme. Nous lançons une API pour éviction du stockage persistant en cas de la pression sur la mémoire devient plus prévisible. Il est disponible à partir de Chromium 122.

Quel problème la norme de stockage résout-elle ?

Traditionnellement, lorsque l'utilisateur manque d'espace de stockage sur son appareil, les données stockées à l'aide d'API telles que IndexedDB ou localStorage est perdu sans que l'utilisateur puisse intervenir. Un moyen de rendre "storage persistant" est d'appeler Méthode persist() du StorageManager. Il demande simultanément l'autorisation de l'utilisateur final et modifie d'espace de stockage persistant une fois accordé:

const persisted = await navigator.storage.persist();
if (persisted) {
  /* Storage will not be cleared except by explicit user action. */
}

Cette méthode pour demander la persistance du stockage est tout ou rien. Il n'y a aucun moyen d'exprimer plus une persistance précise. C'est un bucket de stockage unique.

API Storage Buckets

L'API Storage Buckets repose sur le principe de base : aux sites de créer plusieurs buckets de stockage, dans lesquels le navigateur peut choisir supprimer chaque bucket indépendamment des autres buckets. Cela permet aux développeurs de spécifier l'éviction une priorisation pour vous assurer que les données les plus précieuses ne sont pas supprimées.

Exemple de cas d'utilisation

Pour illustrer l'utilité des buckets de stockage, imaginez une application de messagerie. Ce serait imparable si l'application a perdu les brouillons non envoyés de l'utilisateur qui n'existent que sur le client. En revanche, si qu'ils sont stockés sur un serveur, l'utilisateur accepterait probablement certains de ses e-mails de boîte de réception les plus anciens. sont supprimés du client si leur navigateur est soumis à une forte pression de stockage.

<ph type="x-smartling-placeholder">
</ph> Interface de l&#39;application E-mail
Application de messagerie avec des buckets de stockage distincts pour la boîte de réception et les brouillons. (À titre d'illustration uniquement, cela ne reflète pas nécessairement le fonctionnement de Gmail.)

Utiliser l'API Storage Buckets

Créer un bucket de stockage

Vous pouvez créer un bucket de stockage à l'aide de la méthode open() sur le StorageBucketManager. de commande.

// Create a storage bucket for emails that are synchronized with the
// server.
const inboxBucket = await navigator.storageBuckets.open('inbox');

Créer un bucket de stockage persistant

Pour vous assurer que le bucket de stockage est persistant, vous pouvez transmettre les options durability et persisted à la méthode open():

  • persisted détermine si le bucket de stockage doit être conservé ou non. Les valeurs autorisées sont false (par défaut) ou true.
  • durability fournit un indice au navigateur qui l'aide à trouver un compromis entre les performances d'écriture et réduit le risque de perte de données en cas de coupure de courant. Les valeurs autorisées sont 'relaxed' (par défaut) ou 'strict':

    • 'strict' bucket tente de minimiser le risque de perte de données en cas de coupure de courant. Cela peut venir à le coût des performances réduites, ce qui signifie que les écritures peuvent prendre plus de temps, peut avoir un impact les performances globales du système, de solliciter davantage la batterie et d'user l'appareil de stockage, plus rapidement.
    • 'relaxed' buckets peuvent être supprimés écritures effectuées au cours des dernières secondes une coupure de courant se produit. En retour, l'écriture de données dans ces buckets peut offrir de meilleures performances et peut prolonger l'autonomie de la batterie, ce qui peut réduire durée de vie de l'appareil. De plus, une coupure de courant n'entraînera pas une corruption des données plus importante que celle '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`.
});

Accéder aux API de stockage depuis un bucket de stockage

Chaque bucket de stockage est associé à des API de stockage. Par exemple, IndexedDB, la Cache, ou File. Ces API de stockage fonctionnent comme d'habitude, juste que le point d'entrée provient de l'interface StorageBucket, par exemple 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);
});

Déboguer les buckets de stockage dans les outils de développement

Inspectez les buckets de stockage dans une arborescence dédiée sous Application > Stockage.

Avant et après l&#39;activation de l&#39;arborescence des buckets de stockage dans la section &quot;Stockage&quot;.

Ressources utiles