websql w3schools pwa localstorage chrome indexeddb

indexeddb - w3schools - Límites de almacenamiento en el navegador Chrome



indexeddb w3schools (5)

El límite mínimo o flexible es de 5 MB: el navegador solicitará permiso para almacenar los datos. El almacenamiento máximo es el límite de su disco duro, ya que todos los datos se almacenan localmente en el disco de su máquina. Básicamente, si tiene 20 GB de almacenamiento libre, puede usar todo el almacenamiento para IndexedDB.

¿Cuál es el límite flexible (en el cual el usuario debe dar permiso para excederse)? Cuál es el límite duro (máximo permitido).


IndexedDB recibe memoria del almacenamiento ''TEMPORAL'' en Google Chrome. El almacenamiento temporal en Chrome tiene una cuota predeterminada del 50% del espacio disponible en el disco, el 20% del cual está disponible para su aplicación fuera de línea. Solicitar más cuota contra el almacenamiento temporal no hace nada.

Basado en lo anterior, las respuestas a sus preguntas serían:

  1. IndexedDB (en el navegador Chrome) puede usar el almacenamiento sin solicitarlo. (sabiendo que se asigna desde el almacenamiento temporal)
  2. Solicitar más del límite de almacenamiento TEMPORAL (20% del 50% disponible, descrito anteriormente) no asignará nada.

Puede usar la herramienta demo.agektmr.com/storage (citado en this artículo de HTML5Rocks que tiene resultados documentados para diferentes navegadores) para determinar el almacenamiento temporal disponible en el Chrome que está ejecutando.

No tengo suficiente reputación SO para publicar más enlaces, pero el artículo anterior de HTML5Rocks sobre la investigación de cuotas tiene suficientes detalles para ayudarlo a identificar el tipo de almacenamiento apropiado (TEMPORAL o PERSISTENTE) y el mecanismo de almacenamiento apropiado (si no necesariamente se ha centrado en cero) IndexedDB) como puede ser adecuado para su aplicación.


La regla de oro es 6% (edición 2015-Jul: era 10%) del espacio disponible en el disco duro del usuario, menos si su origen está usando websql, appcache o la api del sistema de archivos. El documento de MDN que menciona 5mb estaba desactualizado y se ha actualizado. Los detalles sangrientos sobre la política actual están aquí: https://developer.chrome.com/apps/offline_storage

Tenga en cuenta algunas sutilezas molestas:

  1. No hay almacenamiento PERSISTENTE para indexeddb, solo se aplica lo que se encuentra en el enlace anterior sobre TEMPORAL.
  2. Una vez que su origen agote su parte del grupo, las transacciones indexeddb se anularán inútilmente sin ninguna indicación real de por qué. A partir de ahora, la única forma de determinar que la falta de cuota es la causa es utilizar queryUsageAndQuota para verificar cuánto espacio queda. Con suerte, una versión futura de Chrome pronto completará adecuadamente IDBTransaction.error en estos casos. Edición: Chrome 26 ahora llena correctamente IDBTransaction.error con QuotaExceededError.
  3. Actualmente no hay API para solicitar más espacio de almacenamiento para indexeddb.

Verifique la cuota con el siguiente código en chrome> dev tools (F12)> console

// Request storage usage and capacity left window.webkitStorageInfo.queryUsageAndQuota(webkitStorageInfo.TEMPORARY, //the type can be either TEMPORARY or PERSISTENT function(used, remaining) { console.log("Used quota: " + used + ", remaining quota: " + remaining); }, function(e) { console.log(''Error'', e); } );


Advertencia: esta información no está actualizada ; consulte la otra respuesta a continuación.

Chrome tiene un límite suave de 5 mb antes de llegar a QUOTA_ERR . Aquí hay una referencia de MDN a ese hecho.

La spec menciona un QuotaExceededError pero no parece decir nada acerca de cuándo debe lanzarse.

QuotaExceededError La operación falló porque no había suficiente espacio de almacenamiento restante, o se alcanzó la cuota de almacenamiento y el usuario se negó a dar más espacio a la base de datos.

No he oído hablar de un límite difícil y no he alcanzado uno en mi propio desarrollo. El rendimiento debe ir bastante al sur antes de llegar a él.