ソフト制限(ユーザーが超過する許可を与える必要がある制限)とは何ですか?ハード制限とは何ですか(最大許容)。
6 に答える
2020年5月の更新:Chromeでは、オリジンがストレージデバイスのスペースの60%を使用できるようになりました(実際の要点:「ストレージデバイス」は、Chromeプロファイルディレクトリを含むパーティションです)。ここで更新された記事https://web.dev/storage-for-the-web/#how-much
経験則では、ユーザーのハードドライブの使用可能なスペースの6%(2015年7月編集:10%)であり、オリジンがwebsql、appcache、またはファイルシステムAPIを使用している場合はそれより少なくなります。5mbに言及しているMDNドキュメントは古く、更新されています。現在のポリシーに関する厄介な詳細はここにあります:https ://developer.chrome.com/apps/offline_storage
いくつかの厄介な微妙な点に注意してください。
- indexeddb用の永続ストレージはありません。TEMPORARYに関する上記のリンクにあるものだけが適用されます。
- オリジンがプールのシェアを使い果たすと、
indexeddbトランザクションは役に立たずに中止され、理由はわかりません。現在のところ、クォータの不足が原因であると判断する唯一の方法は、queryUsageAndQuotaを使用して残りのスペースを確認することです。うまくいけば、chromeの将来のバージョンは、これらの場合にIDBTransaction.errorをすぐに適切に入力します。編集:chrome 26は、IDBTransaction.errorにQuotaExceededErrorを正しく入力するようになりました。 - 現在、indexeddb用に追加のストレージスペースを要求するAPIはありません。
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);
} );
警告-この情報は古くなっています-以下の他の回答を参照してください。
Chromeには、に達する前に5MBのソフト制限がありQUOTA_ERR
ます。これがその事実へのMDNリファレンスです。
仕様には言及されていますが、いつスローされるべきかについては何も述べられていQuotaExceededError
ないようです。
QuotaExceededError 十分なストレージスペースが残っていないか、ストレージクォータに達したため、ユーザーがデータベースにさらにスペースを与えることを拒否したため、操作が失敗しました。
私は厳しい限界について聞いたことがなく、私自身の開発でも限界に達していません。パフォーマンスは、到達する前にかなり南に行く必要があります。
質問はChromeとタグ付きIndexedDBについてです。そして、それはウェブサイトに関するものであり、Chrome拡張機能やアプリ(IndexedDBの無制限のストレージを許可する)に関するものではないと思います。
ウェブサイトの場合、IndexedDBはChrome Temporary Storage(ソース)のAPIです。したがって、問題はChromeの一時ストレージの割り当てについてです。
Chrome 67では、クォータの動作が変更されました。これは、バグレポートを除いて実際には文書化されていません。まとめると、現在のクォータの動作は次のとおりです。
Chromeノーマルモードの場合
オフラインAPI(App Cache、ファイルシステム、IndexedDB、WebSQL)の場合:
「使用可能な状態を維持する必要がある」の値に達した場合、1つのオリジン(「サイト」)のクォータはゼロになります。「使用可能な状態を維持する必要がある」という値は、大容量記憶装置を空けておくためのスペースに関連しています。Chrome 67以降、「2 GiB」と「大容量ストレージの総容量の10%」(ソース)の低い値です。この制限に達すると、一時ストレージへの追加の書き込みは失敗しますが、一時ストレージ内の既存のデータは削除されません。
「使用可能な状態を維持する必要がある」の値がまだヒットしていない場合、クォータは共有プール(ソース)の20%になります。これは(おそらく)「Chromeによってすでに保存されている一時ストレージ内のすべてのデータの20%に加えて、Chromeが「利用可能なままである必要がある」値に達することなくローカルストレージに保存できるすべてのデータ」を意味します。
WebストレージAPI(LocalStorage、SessionStorage、…)の場合:5 MiB固定(ソース) ; これが上記の「利用可能なままである必要がある」という制限の影響を受けるかどうかはわかりません。
Chromeシークレットモードの場合
- オフラインAPI(App Cache、ファイルシステム、IndexedDB、WebSQL)の場合:ca 。大容量記憶装置(ソース)の空き容量に関係なく、100MiBが修正されました。
- WebストレージAPI(LocalStorage、SessionStorage、…)の場合:5 MiBが修正されました(ソース)。
IndexedDBには、GoogleChromeの「TEMPORARY」ストレージからメモリが割り当てられます。Chromeの一時ストレージには、使用可能なディスク容量の50%のデフォルトの割り当てがあり、そのうちの20%はオフラインアプリで使用できます。一時ストレージに対してより多くの割り当てをリクエストしても、何も起こりません。
上記に基づいて、あなたの質問への答えは次のようになります:
- IndexedDB(Chromeブラウザー上)は、ストレージを要求せずに使用できます。(一時ストレージから割り当てられていることを知っている)
- TEMPORARYストレージ制限(上記の50%の20%が使用可能)を超えて要求しても、何も割り当てられません。
ブラウザストレージの悪用ツール(さまざまなブラウザの結果を文書化したこのHTML5Rocksの記事で引用)を使用して、実行しているChromeで利用可能な一時ストレージを特定できます。
私はより多くのリンクを投稿するのに十分なSOレピュテーションを持っていませんが、クォータリサーチに関する上記のHTML5Rocksの記事には、適切なストレージタイプ(一時的または永続的)と適切なストレージメカニズム(必ずしもゼロにされていない場合)を特定するのに役立つ十分な詳細がありますIndexedDB)は、アプリケーションに適している場合があります。
最小またはソフト制限は5MBです-ブラウザはデータを保存する許可を求めます。すべてのデータがマシンディスクにローカルに保存されるため、最大ストレージはhardriveディスクの制限です。基本的に、20GBの空きストレージがある場合は、IndexedDBのすべてのストレージを使用できます。