2012-06-11 62 views

答えて

7

クロムのソフトリミットは、QUOTA_ERRになる前に5MBの制限があります。その事実にはHere's a MDN reference

specにはQuotaExceededErrorが記載されていますが、投げるべきタイミングについては何も言われていません。十分 残りの記憶スペースがなかったため

QuotaExceededError操作が失敗した、または保存容量に達したとユーザ は、データベースへのより多くのスペースを与えることを拒否しました。

私はハードリミットについて聞いたことがなく、自分の開発では1つに達していません。あなたがそれに到達する前に、パフォーマンスはかなり南に行くはずです。

+4

この情報は古くなっています。クロムにIndexedDBに関連する5MBの制限はありません。 – dgrogan

+0

それは部分的に真です。ほとんどのChromeブラウザには50MBの制限がありますが、Chromeのモバイル版には5MBの制限があります。 – buley

+7

あなたはどう思いますか?私が知っている限り、それらの事柄のどちらも真実ではありません。 (私は、ChromeのIndexedDBクォータの施行コードを書いています)。私はまだ私の電話でhttp://demo.agektmr.com/storage/で遊んでいました。それがまだ動作していて、そこには5mbの制限はありませんでした。 – dgrogan

30

経験則は、ユーザーのハードドライブの空き容量の6%(編集2015-7月:10%)です。起源がwebsql、appcache、またはファイルシステムapiを使用している場合は少なくなります。 5MBのMDN文書は古く、更新されました。現在の方針についての血みどろの詳細はこちらです:https://developer.chrome.com/apps/offline_storage

注いくつかの厄介な機微:

  1. のIndexedDBのための永続ストレージ、TEMPORARYが適用についてはリンクだけのものではありません。
  2. オリジンがプールのシェアを使い切ったら、 indexeddbのトランザクションは、本当に理由が分かりません。現在、クォータが不足していると判断する唯一の方法は、残っている容量を確認するためにqueryUsageAndQuotaを使用することです。うまくいけば、クロムの将来のバージョンで、間もなくこれらのケースでIDBTransaction.errorが正しく記入されることを願っています。編集:chrome 26がIDBTransaction.errorをQuotaExceededErrorで正しく埋め込むようになりました。
  3. 現在、indexeddbのストレージ容量を追加するAPIはありません。
+1

申し訳ありませんが、私はこれで少し混乱しています。ユーザーのハードドライブの10%で、3TBのハードドライブがあれば、300GBのIndexedDBを作成できますか?その後、それはエラーをスローするだろうか? – benshope

+0

そうです。正直な質問:あなたが考えている他の解釈は何ですか? – dgrogan

+1

他の理論は、私にはブラウザのための多くのスペースが好きなように思えました。ありがとう:D – benshope

0

最小または最小限の制限は5MBです。ブラウザはデータの保存の許可を求めます。 すべてのデータがマシンディスクにローカルに保存されるため、最大ストレージはハードディスクの限界です。 基本的に20GB以上の空き容量がある場合、IndexedDBのすべてのストレージを使用できます。クロム>のdevのツール(F12)に次のコードを持つ

+1

メッセージは質問とその答えに答えています。研究を最初に行い、その後、私のメッセージを役に立たないものにすることができます。 – stefan

+0

投稿を確認してくださいhttps://developer.mozilla.org/en-US/docs/IndexedDB – stefan

+5

質問がクロームについてです。あなたの答えはFirefoxに関するものです。 – dgrogan

12

チェッククォータ>コンソール

// 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

*警告: 'window.webkitStorageInfo'は推奨されていません。代わりに 'navigator.webkitTemporaryStorage'または' navigator.webkitPersistentStorage'を使用してください。* – cregox

+1

現在の標準についてはhttp://stackoverflow.com/a/29662958/2441511を参照してください.2015年4月現在 – user2441511

4

のIndexedDBは、Google Chromeで「TEMPORARYのストレージからメモリを与えています。 Chromeの一時ストレージには、使用可能なディスク容量の50%のデフォルトクォータがあり、そのうちの20%はオフラインアプリで使用できます。一時ストレージに対するクォータの割り当てが増えても何も起こりません。以上を踏まえ

、ご質問は以下のようになります。

  1. のIndexedDB(Chromeブラウザ上で)それを要求することなく、ストレージを使用することができます。(一時的なストレージから割り当てられたことを知っている)
  2. TEMPORARYストレージの制限(上記の50%のうち20%が利用可能です)を超えるリクエストは何も割り当てません。

あなたが実行しているクロームで利用可能な一時的な記憶を決定するために(別のブラウザの結果を文書化したthisするHTML5 Rocksの記事で引用)Browser Storage Abuserツールを使用することができます。

リンクを追加するには十分な評判がありませんが、クォータリサーチの上記のHTML5Rocksの記事では、適切なストレージタイプ(TEMPORARYまたはPERSISTENT)と適切なストレージメカニズム(あなたのアプリケーションに適しているように、IndexedDBでは必ずゼロになります)。

関連する問題