web-dev-qa-db-ja.com

GoogleのlocalStorageのサイズを増やす方法はありますかChrome QUOTA_EXCEEDED_ERRを回避するため:DOM Exception 22

保存を押すまでlocalStorageに画像を保存できるWebアプリケーションを作成しました(信号が弱い場合はオフラインで機能します)。

LocalStorageが5MBに達すると、Google Chrome=がJavaScriptコンソールログにエラーを生成します。

キャッチされないエラー:QUOTA_EXCEEDED_ERR:DOM例外22

Google ChromeでlocalStorage割り当てのサイズを増やすにはどうすればよいですか?

22
HM2K

できません。5MBに固定されています。これは Chrome開発者)による設計の決定 です。

Chromeでは、デフォルトでWeb SQL dbとキャッシュマニフェストにも低い制限がありますが、Chrome App Store それらを増やすことができます のアプリをパッケージ化する場合。

HTML5オフラインストレージの管理-Google Chrome もご覧ください。

13
Liza Daly

5MBはハード制限であり、それはばかげています。 IndexedDBは、50 MBを提供します。使いやすくするには、Dexie.jsを試してください https://github.com/dfahlander/Dexie.js

更新

Dexie.jsは実際にはまだ私の単純なKey-Valueの目的には行き過ぎでした。そのため、このはるかに単純なスクリプトを作成しました https://github.com/DVLP/localStorageDB

これで50MBあり、そのような値を取得して設定できます

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

上記の例のldb.set()およびldb.get()が使用できるように、下の行をコピーして貼り付けます。

_!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

クォータはuserを設定するためのもので、各Webサイトに許可するスペースの量です。

したがって、目的はWebページを制限することであるため、Webページは制限を変更できません。

ストレージが少ない場合は、ローカルストレージを増やすようにユーザーに要求できます。

ストレージが少ないかどうかを確認するには、オブジェクトを保存してから削除することにより、ローカルストレージのサイズを調べることができます。

3
Ben

できませんが、JSONをlocalStorageに保存する場合は、ライブラリを使用して次のようにデータを圧縮できます。 https://github.com/k-yak/JJLC

デモ: http://k-yak.github.io/JJLC/

2