web-dev-qa-db-fra.com

Existe-t-il un moyen d'augmenter la taille de localStorage dans Google Chrome pour éviter quota_exceedd_err: exception DOM 22

J'ai écrit une webApp qui vous permet de stocker les images dans le localStorage jusqu'à ce que vous appuyez sur Enregistrer (il fonctionne donc hors ligne, si le signal est pauvre).

Lorsque le localStorage atteint 5 Mo Google Chrome produit une erreur dans le journal de la console JavaScript:

Erreur non capturée: quota_exceedd_err: exception DOM 22

Comment augmenter la taille du quota localStorage sur Google Chrome?

22
HM2K

Vous ne pouvez pas, c'est difficile câblé à 5 Mo. Ceci est une décision de conception par Chrome Developers .

En Chrome, le manifeste Web SQL SQL et Cache ont également des limites faibles par défaut, mais si vous emballez sur l'application pour le Chrome App Store vous pouvez les augmenter .

Voir aussi Gestion du stockage HTML5 hors ligne - Google Chrome .

13
Liza Daly

5 Mo est une limite difficile et c'est stupide. Indexeddb vous donne ~ 50 Mo, ce qui est plus raisonnable. Pour faciliter l'utilisation, essayez dexie.js https://github.com/dfahlander/dexie.js

Mise à jour :

Dexie.js était toujours une overcilleuse pour mes objectifs de la valeur de clé simples, donc j'ai écrit ce script beaucoup plus simple https://github.com/dvlp/localstoragedb

avec cela, vous avez 50 Mo et peut obtenir et définir des valeurs comme ça

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

Copiez/collez la ligne ci-dessous, alors ldb.set() et ldb.get() À partir de l'exemple ci-dessus sera disponible.

!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)}}}();
10
Pawel

Le quota est pour le Utilisateur Pour définir, combien d'espace il souhaite autoriser chaque site Web.

Par conséquent, depuis que l'objectif est de limiter les pages Web, les pages Web ne peuvent pas modifier la restriction.

Si le stockage est faible, vous pouvez inviter l'utilisateur à augmenter le stockage local.

Pour savoir si le stockage est faible, vous pouvez sonder la taille de stockage locale en enregistrant un objet puis la supprime.

3
Ben