web-dev-qa-db-ja.com

IndexedDBを使用した使用可能なストレージの検出

IDBを利用して、オフラインで使用するためにMySQLDBに通常存在する画像とテキストを保存するオフラインアプリケーションを作成しました。

ただし、IndexedDBのデバイスストレージの制限を読み取る方法を見つけようとしています。 Chromeでのみ機能しますが、現在、次の方法を使用してこれを判別しています。

私はここからスニペットを使用しています https://stackoverflow.com/a/18350531/4121257 これはWebKitベースのstorageInfoを取得しますが、誰かがFFで取得する方法を知っている場合&IE&より具体的にはSafariが素晴らしいでしょう。

私が収集したものから、これはIDBだけでなく、そのブラウザによってドメインに保存されているすべての使用済みクォータを返します。ただし、私が使用しているのは、残りの割り当てです。これから、サーバーに対してAJAXリクエストを実行して、保存されるすべてのファイルの推定サイズを取得し、十分なストレージがあるかどうかを計算するか、に保存されている量を計算します。 IDBを使用して、さらに保存するのに十分かどうかを確認します。

誰かがもっと「合理化された」アプローチを持っているのだろうかと思っていましたか?そして、FF/IE、特にSafariで残りのクォータをチェックする方法、さらにはIDBのクォータを具体的にチェックする方法もあります。

22
Jayden Spring

現在利用可能でchrome)のみのAPIはnavigator.webkitTemporaryStorage.queryUsageAndQuota()のみです。

Firefox 計画がありました このAPIも実装します。

chrome with _--enable-experimental-web-platform-features_を実行すると、2つの実験的なAPI navigator.storageQuota.queryInfo(type)navigator.storage.estimate()も利用できます。詳細はこちら: https://groups.google.com/a/chromium.org/forum/#!searchin/blink-dev/quota-api/blink-dev/P6eY26vB91c/Ri4ohXOPBQAJ

ストレージクォータ見積もり()API が最も興味深いものだと思います。まだドラフトですが、 chromemozilla は現在このAPIを実装しています。

残念ながら、現在、 Edge でSafariがこのAPIを実装する場合、利用できる公開情報はありません。

Edgeには現在、クォータのモデルが大きく異なります。Origin全体の制限ではなく、各ストレージタイプ(インデックス付きデータベース、ローカルストレージなど)には独自の制限があります。

更新:この機能はChrome 52(実験フラグ)およびFirefox 51(毎晩)navigator.storage.estimate().then((data)=>console.log(data)) // Object { quota: 2147483648, usage: 0 }

14
Steffen