web-dev-qa-db-ja.com

Chromeブラウザのストレージ制限

ソフト制限(ユーザーが超過する許可を与える必要がある)とは何ですか?ハードリミットとは何ですか(最大許容)。

33
Clay Nichols

警告-この情報は古くなっています-下記の その他の回答 を参照してください。

Chromeには、 QUOTA_ERRこれがMDNリファレンスです その事実。

specQuotaExceededErrorに言及していますが、いつスローすべきかについては何も言っていないようです。

QuotaExceededError十分なストレージスペースが残っていないか、ストレージクォータに達し、ユーザーがデータベースにスペースを追加することを拒否したため、操作は失敗しました。

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

4
buley

経験則は、ユーザーのハードドライブの使用可能なスペースの6%(2015年7月を編集:10%でした)で、Originがwebsql、appcache、またはファイルシステムapiを使用している場合は少なくなります。 5mbについて言及しているMDNドキュメントは古く、更新されています。現在のポリシーに関するつまらない詳細はこちら: https://developer.chrome.com/apps/offline_storage

いくつかの迷惑な微妙な点に注意してください。

  1. IndexeddbにはPERSISTENTストレージはありません。TEMPORARYに関する上記のリンクの内容のみが適用されます。
  2. Originがプールのシェアを使い果たすと、indexeddbトランザクションは、理由を実際に示すことなく、役に立たずに中止します。現在、クォータ不足が原因であると判断する唯一の方法は、 queryUsageAndQuota を使用して、残っているスペースの量を確認することです。これらの場合、chromeの将来のバージョンがIDBTransaction.errorをすぐに適切に記入することを願っています。 編集:chrome 26はIDBTransaction.errorにQuotaExceededErrorを適切に入力するようになりました。
  3. 現在、indexeddbに追加のストレージスペースを要求するAPIはありません。
37
dgrogan

Chrome> dev tools(F12)> consoleの次のコードでクォータを確認します

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

IndexedDBには、Google Chromeの「TEMPORARY」ストレージからメモリが割り当てられます。 Chromeの一時ストレージには、使用可能なディスク容量の50%のデフォルトクォータがあり、その20%がオフラインアプリで使用可能です。一時ストレージに対して追加のクォータをリクエストしても何も起こりません。

上記に基づいて、質問への回答は次のようになります。

  1. IndexedDB(Chrome browser)は、ストレージを要求することなく使用できます(一時ストレージから割り当てられていることを認識しています)
  2. TEMPORARYストレージ制限(上記の50%の20%を超える)を超えて要求しても、何も割り当てられません。

Browser Storage Abuser ツール( this HTML5Rocksの記事で引用され、さまざまなブラウザーの結果を文書化しています)を使用して、Chrome実行しています。

より多くのリンクを投稿するのに十分なSOレピュテーションはありませんが、上記のクォータリサーチに関するHTML5Rocks記事には、適切なストレージタイプ(TEMPORARYまたはPERSISTENT)および適切なストレージメカニズム(必ずしもIndexedDBをゼロ化していない場合)、アプリケーションに適している可能性があります。

5
Shalabh Vyas

問題は、Chromeおよびタグ付きIndexedDBです。そして、Chrome拡張機能またはアプリ(IndexedDBの無制限のストレージを許可する)ではなく、Webサイトに関するものです。

Webサイトの場合、IndexedDBはChrome一時ストレージ( source )のAPIです。したがって、質問は一時ストレージのquotaについてです。 Chromeで

Chrome 67、クォータの動作が変更され、これは バグレポート を除いて実際には文書化されていません。まとめて、現在のクォータの動作は次のとおりです。

  • In Chromeノーマルモード

    • オフラインAPI(アプリキャッシュ、ファイルシステム、IndexedDB、WebSQL)の場合:

      「使用可能なままにしておく」値がヒットした場合、1つのオリジン(「サイト」)のクォータはゼロになります。 「使用可能なままにしておく」値は、大容量ストレージで空き領域を確保するためのスペースに関連しています。 Chrome 67、「2 GiB」と「10%of mass storage total capacity」の下限値です( source )。この制限に達すると、一時ストレージへの追加の書き込みは失敗しますが、一時ストレージ内の既存のデータは削除されません。

      「使用可能なままにしておく」値がまだヒットしていない場合、クォータは共有プールの20%になります( source )。これは(おそらく)「Chromeによって既に保存されている一時ストレージのすべてのデータの20%に加えて、Chromeは「使用可能なままにする」値を押すことなくローカルストレージに保存できるすべてのデータ」を意味します」.

    • WebストレージAPI(LocalStorage、SessionStorage、…):5 MiB固定( source );これが上記の「使用可能なままにする必要がある」という制限の影響を受けるかどうかはわかりません。

  • In Chromeシークレットモード

    • オフラインAPI(アプリキャッシュ、ファイルシステム、IndexedDB、WebSQL):ca.大容量記憶装置の空き領域に関係なく、100 MiBが修正されました( source )。
    • WebストレージAPI(LocalStorage、SessionStorage、…):5 MiB修正済み( source )。
0
tanius