我编写了一个离线应用程序,它利用 IDB 来存储通常存在于 MySQL 数据库中以供离线使用的图像和文本。
但是,我正在尝试找出一种方法来读取 IndexedDB 的设备存储限制。我目前正在使用以下方法来确定这一点,尽管它仅适用于 Chrome。
我正在使用这里的代码片段https://stackoverflow.com/a/18350531/4121257,它获取基于WebKit的
storageInfo
,但是如果有人知道在FF和IE上获取它的方法,更具体地说是Safari那就太好了。
根据我收集的信息,这会返回该浏览器为该域存储的所有内容的已用配额,而不仅仅是 IDB。然而,我使用的是剩余配额。由此,我要么向服务器执行 AJAX 请求,以获取将存储的所有文件的估计大小并计算出是否有足够的存储空间,或者我将计算 IDB 中存储的数量并计算出是否有足够的存储空间。储存更多。
我想知道是否有人有更“精简”的方法? 以及一种检查 FF/IE(尤其是 Safari)中剩余配额的方法,甚至是一种专门检查 IDB 配额的方法。
当前唯一可用且仅适用于 Chrome 的 API 是
navigator.webkitTemporaryStorage.queryUsageAndQuota()
。
Firefox 也计划实现此 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
我认为存储配额估算()API是最有趣的一个。它仍然是一个草案,但 chrome 和 mozilla 目前正在实现此 API。
不幸的是,目前没有公开信息表明 Edge 和 Safari 何时以及是否会实现此 API。
Edge 目前有一个非常不同的配额模型 - 每种存储类型(索引数据库、本地存储等)都有自己的限制,而不是整个源限制。
更新: 此功能已添加到 Chrome 52(实验标志)和 Firefox 51(夜间)
navigator.storage.estimate().then((data)=>console.log(data)) // Object { quota: 2147483648, usage: 0 }