使用IndexedDB检测可用存储

Jay*_*ing 22 javascript html5 indexeddb

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

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

我正在使用/sf/answers/1284537201/中的代码段,它可以获得storageInfo基于WebKit的内容,但是如果有人知道如何在FF&IE上获取它,更具体地说是Safari会很棒.

根据我收集的内容,这将返回该浏览器为域而不仅仅是IDB存储的所有内容的使用配额.但是,我使用的是重新配额.从这个我要么执行AJAX请求到服务器来获取所有将要存储的文件的估计规模,制定出是否有足够的存储空间,否则我将计算存储在IDB的ammount的制定出是否有足够的存储更多.

我想知道是否有人采用更"流线型"的方法?还有一种方法可以检查FF/IE中的重新配额,特别是Safari,甚至可以检查IDB的配额.

Ste*_*fen 14

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

Firefox 也计划实现这个API.

还有两个实验性API navigator.storageQuota.queryInfo(type),navigator.storage.estimate()如果您运行chrome,则可用--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 }