javascript - localstorage - quotaexceedederror dom exception 22
¿Hay alguna manera de aumentar el tamaño de localStorage en Google Chrome para evitar QUOTA_EXCEEDED_ERR: DOM Exception 22 (4)
5MB es un límite duro y eso es estúpido. IndexedDB le da ~ 50MB que es más razonable. Para que sea más fácil de usar, intente Dexie.js https://github.com/dfahlander/Dexie.js
Actualización :
Dexie.js en realidad seguía siendo una exageración para mis simples propósitos de valor-clave, así que escribí este script mucho más simple https://github.com/DVLP/localStorageDB
Con esto tienes 50MB y puedes obtener y establecer valores como ese
// Setting values
ldb.set(''nameGoesHere'', ''value goes here'');
// Getting values - callback is required because the data is being retrieved asynchronously:
ldb.get(''nameGoesHere'', function (value) {
console.log(''And the value is'', value);
});
Copie / pegue la línea a continuación para que ldb.set()
y ldb.get()
del ejemplo anterior estén disponibles.
!function(){function e(t,o){return n?void(n.transaction("s").objectStore("s").get(t).onsuccess=function(e){var t=e.target.result&&e.target.result.v||null;o(t)}):void setTimeout(function(){e(t,o)},100)}var t=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;if(!t)return void console.error("indexDB not supported");var n,o={k:"",v:""},r=t.open("d2",1);r.onsuccess=function(e){n=this.result},r.onerror=function(e){console.error("indexedDB request error"),console.log(e)},r.onupgradeneeded=function(e){n=null;var t=e.target.result.createObjectStore("s",{keyPath:"k"});t.transaction.oncomplete=function(e){n=e.target.db}},window.ldb={get:e,set:function(e,t){o.k=e,o.v=t,n.transaction("s","readwrite").objectStore("s").put(o)}}}();
He escrito una aplicación web que te permite almacenar las imágenes en el almacenamiento local hasta que pulses guardar (para que funcione sin conexión, si la señal es deficiente).
Cuando el localStorage alcanza 5MB, Google Chrome produce un error en el registro de la consola de javascript:
Error no detectado: QUOTA_EXCEEDED_ERR: Excepción de DOM 22
¿Cómo puedo aumentar el tamaño de la cuota de almacenamiento local en Google Chrome?
La cuota es para que el usuario la establezca, cuánto espacio desea permitir a cada sitio web.
Por lo tanto, dado que el propósito es restringir las páginas web, las páginas web no pueden cambiar la restricción.
Si el almacenamiento es bajo, puede solicitar al usuario que aumente el almacenamiento local.
Para saber si el almacenamiento es bajo, puede probar el tamaño del almacenamiento local guardando un objeto y luego eliminándolo.
No puede, pero si guarda JSON en su localStorage, puede utilizar una biblioteca para comprimir datos como: https://github.com/k-yak/JJLC
demostración: http://k-yak.github.io/JJLC/
No puedes, está cableado a 5MB. Esta es una decisión de diseño de los desarrolladores de Chrome .
En Chrome, la base de datos de la base de datos web SQL y el manifiesto de la memoria caché también tienen límites bajos de forma predeterminada, pero si empaquetas la aplicación para Chrome App Store , puedes aumentarlos .
Consulte también Administración de almacenamiento sin conexión HTML5 - Google Chrome .