使用IndexedDB检测可用存储空间

24

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

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

我正在使用来自此处的片段https://dev59.com/Gmgu5IYBdhLWcg3w6bKo#18350531获取基于WebKit的storageInfo ,但是如果有人知道在FF和IE以及更具体地说Safari上获取它的方法,那就太好了。

据我所了解,这将返回该浏览器为域中存储的所有内容的使用配额,而不仅仅是IDB。然而,我使用的是剩余配额。从此,我要么执行AJAX请求到服务器以获取将存储的所有文件的估计大小并计算是否有足够的存储空间,或者我将计算存储在IDB中的数量并计算是否有足够的空间来存储更多。

我想知道是否有人有更“简化”的方法?以及检查FF/IE尤其是Safari的剩余配额的方法,甚至检查特定于IDB的配额的方法。


请参阅浏览器存储限制和清除标准 - guest271314
这个问题有点混淆;你说你目前的方法只适用于基于WebKit的浏览器,然后问如何使其在Safari上工作...但是Safari 就是基于WebKit的! - Mark Amery
1个回答

15

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

Firefox 曾计划实现此API。

如果您在Chrome中使用--enable-experimental-web-platform-features,还有两个试验性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目前具有非常不同的配额模型 - 而不是整个来源限制,每种存储类型(indexed db、本地存储等)都有自己的限制。

更新: 这个功能已经添加到Chrome 52 (实验性标志)和Firefox 51 (夜间) navigator.storage.estimate().then((data)=>console.log(data)) // Object { quota: 2147483648, usage: 0 }


1
目前Firefox对navigator.storage的支持被dom.storageManager.enabled禁用,除了在夜间版本中。Nightly 55也使其成为https - Alexander O'Mara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接