使用IndexedDB检测可用存储

时间:2014-10-08 12:42:10

标签: javascript html5 indexeddb

我编写了一个离线应用程序,它利用IDB存储通常存在于MySQL数据库中以供离线使用的图像和文本。

但是,我试图找出一种方法可以读取IndexedDB的设备存储限制。我目前正在使用以下方法来确定这一点,尽管它仅适用于Chrome。

我正在使用此处https://stackoverflow.com/a/18350531/4121257的片段,它获取了基于WebKit的storageInfo,但是如果有人知道如何在FF& IE&更具体地说,Safari会很棒。

从我收集的内容中,这将返回该浏览器为域而不仅仅是IDB存储的所有内容的使用配额。但是,我使用的是重新配额。从这里我要么向服务器执行一个AJAX请求,以获得将要存储的所有文件的估计大小,如果有足够的存储空间,我将计算出来,或者我将计算存储在IDB中的ammount,并确定是否有足够的存储更多。

我想知道是否有人采用更“流线型”的方法?还有一种方法来检查FF / IE中的重新配额,尤其是Safari&甚至是专门检查IDB配额的方法。

1 个答案:

答案 0 :(得分:13)

目前唯一可用且仅适用于Chrome的API是navigator.webkitTemporaryStorage.queryUsageAndQuota()

Firefox had plans也可以实现此API。

如果您使用navigator.storageQuota.queryInfo(type)运行chrome,则还有两个实验性API navigator.storage.estimate()--enable-experimental-web-platform-features可用。更多详情: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,目前暂无公开信息。

  

Edge目前有一个非常不同的配额模型 - 而不是整个原点限制,每种存储类型(索引数据库,本地存储等)都有自己的限制。

更新:此功能已添加到Chrome 52(试验标志)和Firefox 51(每晚) navigator.storage.estimate().then((data)=>console.log(data)) // Object { quota: 2147483648, usage: 0 }