2014-10-08 119 views
19

我編寫了一個離線應用程序,利用IDB存儲通常存在於MySQL數據庫中的圖像和文本以供離線使用。使用IndexedDB檢測可用存儲空間

但是,我試圖找出一種方法,我可以讀取IndexedDB的設備存儲限制。我目前使用下面的方法來確定這一點,儘管它只適用於Chrome。

我使用從這裏https://stackoverflow.com/a/18350531/4121257它得到了storageInfo然而,對於基於WebKit如果有人知道一種方式來獲得它FF & IE &更具體的Safari瀏覽器,將是巨大的片段。

從我收集到的信息可以看出,該域名不僅包含IDB,還包含該瀏覽器存儲的所有內容的已用配額。但是,我正在使用的是重新配額。從這裏我要麼執行一個AJAX請求到服務器,以獲得所有文件的估計大小,如果有足夠的存儲空間,將計算存儲的所有文件的大小,或者我將計算存儲在IDB中的ammount,並計算出是否有足夠的存儲更多。

我想知道如果有人有更多'精簡'的方法?還有一種方法可以檢查FF/IE中的重新配額配額,尤其是Safari &甚至可以專門檢查IDB的配額。

+0

見[瀏覽器存儲限制和逐出標準](HTTPS://developer.mozilla。 org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria) – guest271314 2016-08-08 00:59:01

+0

這個問題有點困惑;你說目前的方法只適用於基於WebKit的瀏覽器,然後問如何使它適用於Safari ...但Safari *是基於WebKit的! – 2017-09-04 18:42:27

回答

8

當前唯一可用且僅用於Chrome的API是navigator.webkitTemporaryStorage.queryUsageAndQuota()

Firefox had plans也可以實現這個API。

如果您使用--enable-experimental-web-platform-features運行chrome,還有兩個實驗性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

我認爲Storage quota estimate() API是最有趣的。它仍然是一個草案,但chromemozilla目前正在實施此API。

不幸的是,如果Edge和Safari將實施此API,目前沒有公開信息可用。

邊緣目前有一個非常不同的配額模型 - 而不是一個全侷限制,每種存儲類型(索引數據庫,本地存儲等)都有其自身的限制。

更新:此功能是加入到鉻52(實驗標誌)和Firefox 51(夜間) navigator.storage.estimate().then((data)=>console.log(data)) // Object { quota: 2147483648, usage: 0 }

+0

目前Firefox對['navigator.storage'](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorStorage/storage)的支持由'dom.storageManager.enabled'禁用,除了夜間版本。 [每夜55也使它僅https](https://bugzilla.mozilla.org/show_bug.cgi?id=1268804)。 – 2017-05-05 01:43:48