Storage Standard define una API para el almacenamiento persistente y las estimaciones de cuotas y la arquitectura de almacenamiento de la plataforma. Lanzaremos una API para que la expulsión del almacenamiento persistente en cargas la presión de la memoria sea más predecible. Está disponible a partir de Chromium 122.
¿Qué problema resuelve el estándar de almacenamiento?
Por lo general, cuando el usuario se queda sin espacio de almacenamiento en su dispositivo, los datos almacenados con APIs como
IndexedDB o localStorage
se pierden sin que el usuario pueda intervenir. Una forma de hacer
el almacenamiento persistente es invocar el
persist()
de la
StorageManager
. De manera simultánea, solicita permiso al usuario final y cambia la
para que sea persistente una vez otorgado:
const persisted = await navigator.storage.persist();
if (persisted) {
/* Storage will not be cleared except by explicit user action. */
}
Este método para solicitar la persistencia del almacenamiento es todo o nada. No hay forma de expresar más de persistencia detalladas. Todo es un bucket de almacenamiento.
API de Storage Buckets
La idea principal de la API de Storage Buckets es otorgar a los sitios la capacidad de crear varios buckets de almacenamiento, donde el navegador puede elegir y borrar cada bucket independientemente de los demás. Esto permite que los desarrolladores especifiquen expulsiones y priorización para asegurarse de que no se borren los datos más valiosos.
Ejemplo de caso de uso
Para ilustrar dónde serían útiles los buckets de almacenamiento, imaginemos una aplicación de correo electrónico. Sería No se puede perdonar si la app pierde los borradores no enviados del usuario que solo existen en el cliente. Por el contrario, si si están almacenados en un servidor, el usuario probablemente estaría bien con algunos de sus correos electrónicos más antiguos en la bandeja de entrada. eliminar del cliente si el navegador está bajo mucha presión de almacenamiento.
![Interfaz de la app de correo electrónico](https://developer.chrome.google.cn/static/docs/web-platform/storage-buckets/image/email-app-interface-174aa34e599a1.png?authuser=7&hl=es-419)
Usa la API de Storage Buckets
Crea un bucket de almacenamiento nuevo
Se puede crear un bucket de almacenamiento nuevo con el método open()
en StorageBucketManager
interfaz de usuario.
// Create a storage bucket for emails that are synchronized with the
// server.
const inboxBucket = await navigator.storageBuckets.open('inbox');
Crea un bucket de almacenamiento nuevo y persistente
Para garantizar que el bucket de almacenamiento se conserve, puedes pasar las opciones durability
y persisted
argumentos del método open()
:
persisted
determina si el bucket de almacenamiento debe ser persistente o no. Los valores permitidos son los siguientes:false
(predeterminado) otrue
.durability
proporciona una sugerencia al navegador que le ayuda a compensar el rendimiento de la escritura con respecto a un menor riesgo de pérdida de datos en caso de cortes de energía. Los valores permitidos son'relaxed'
(predeterminado) o'strict'
:'strict'
buckets intentan minimizar el riesgo de pérdida de datos por fallas de energía. Esto puede tener El costo del rendimiento reducido (es decir, que las operaciones de escritura tarden más en completarse) podrían afectar es posible que el rendimiento general del sistema, el consumo de batería y el desgaste del dispositivo de almacenamiento más rápido.'relaxed'
buckets pueden “olvidar” escrituras completadas en los últimos segundos, cuando un se produce un corte de energía. A su vez, escribir datos en estos buckets puede tener un mejor rendimiento características, y permite que la carga de la batería dure más, y puede dar lugar a más almacenamiento la vida útil del dispositivo. Además, un corte de energía no provocará que los datos se dañen a una tasa mayor que para'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`.
});
Accede a las APIs de Storage desde un bucket de almacenamiento
Cada bucket de almacenamiento está asociado con las APIs de almacenamiento, por ejemplo,
IndexedDB, el
Cache o la
File. Estas APIs de almacenamiento funcionan según
como de costumbre, solo que el punto de entrada es de la interfaz StorageBucket
, por ejemplo,
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);
});
Depura buckets de almacenamiento en Herramientas para desarrolladores
Inspecciona buckets de almacenamiento en un árbol dedicado en Application > Storage.