2012-06-11 16 views

Respuesta

7

Chrome tiene un límite de 5mb antes de que llegue a QUOTA_ERR. Here's a MDN reference a ese hecho.

El spec menciona un QuotaExceededError pero no parece decir nada sobre cuándo se debe lanzar.

QuotaExceededError en la operación 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 estricto y no he llegado a uno en mi propio desarrollo. El rendimiento debería ir bastante al sur antes de alcanzarlo.

+4

Esta información está desactualizada. No hay límite de 5mb relacionado con IndexedDB en Chrome. – dgrogan

+0

Eso es parcialmente cierto. Hay un límite de 50 mb en la mayoría de los navegadores Chrome, pero un límite de 5 mb en las versiones móviles de Chrome. – buley

+7

¿Qué te hace pensar eso? Hasta donde yo sé, ninguna de esas cosas es verdadera. (Escribí el código de cumplimiento de cuotas de Chrome IndexedDB.) Acabo de jugar con http://demo.agektmr.com/storage/ en mi teléfono para asegurarme de que seguía funcionando y no había un límite de 5 MB allí que pudiera ver. – dgrogan

30

La regla de oro es 6% (edita 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 mencionando 5mb estaba desactualizado y se ha actualizado. Los detalles morbosos sobre la política actual está aquí: https://developer.chrome.com/apps/offline_storage

Nota: algunas sutilezas molestos

  1. No hay almacenamiento persistente de datos indexada, solamente la materia en el enlace anterior se aplica sobre TEMPORAL.
  2. Una vez que su origen agota su parte del grupo, transacciones indexeddb abortarán sin ninguna indicación real por qué. A partir de ahora, la única forma de determinar la falta de cuota es utilizar queryUsageAndQuota para verificar cuánto espacio queda. Esperemos que una versión futura de Chrome pronto llene correctamente IDBTransaction.error en estos casos. Editar: Chrome 26 ahora rellena correctamente IDBTransaction.error con QuotaExceededError.
  3. Actualmente no hay API para solicitar más espacio de almacenamiento para indexeddb.
+1

Lo siento, estoy un poco confundido por esto. En un 10% del disco duro del usuario, ¿quiere decir que si el usuario tuviera un disco duro de 3TB, podría crear un IndexedDB de 300GB? Y después de eso, ¿arrojaría un error? – benshope

+0

Eso es correcto. Pregunta honesta: ¿cuál es la otra interpretación que considera? – dgrogan

+1

No hay otra teoría que me parezca mucho espacio para que ocupe un navegador. Gracias: D – benshope

0

El límite mínimo o mínimo es de 5MB- 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 gratuito, puede usar todo el almacenamiento de IndexedDB.

+1

el mensaje está respondiendo a la pregunta y es correcto. Investigue primero y después puede poner mi mensaje como inútil. – stefan

+0

revisa la publicación https://developer.mozilla.org/en-US/docs/IndexedDB – stefan

+5

La pregunta es sobre cromo. Tu respuesta es sobre firefox. – dgrogan

12

verificación de cuotas con el siguiente código en cromo> Herramientas de desarrollo (F12)> consola

// 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); 
}); 
+2

* Advertencia: 'window.webkitStorageInfo' está en desuso. Utilice en su lugar 'navigator.webkitTemporaryStorage' o' navigator.webkitPersistentStorage'. * – cregox

+1

Consulte http://stackoverflow.com/a/29662958/2441511 para conocer el estándar actual, a partir de abril de 2015. – user2441511

4

IndexedDB se da la 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% de los cuales está disponible para su aplicación fuera de línea. Solicitar más cuota contra el almacenamiento temporal no hace nada.

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

  1. IndexedDB (en el navegador Chrome) pueden utilizar el almacenamiento sin que lo solicite.(sabiendo que está asignado desde el almacenamiento temporal)
  2. Solicitar más del límite de almacenamiento TEMPORAL (20% del 50% disponible, descrito anteriormente) no asignará nada.

usted podría utilizar la herramienta Browser Storage Abuser (citado en this HTML5Rocks artículo que ha documentado los resultados para diferentes navegadores) para determinar almacenamiento temporal disponible en la Chrome está ejecutando.

No tengo suficiente reputación de SO para publicar más enlaces, pero el artículo HTML5Rocks anterior sobre 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 redujo a cero en IndexedDB) como puede ser adecuado para su aplicación.

Cuestiones relacionadas