2014-10-08 100 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