首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算indexedDB表大小的铬?

如何计算indexedDB表大小的铬?
EN

Stack Overflow用户
提问于 2019-04-02 18:23:40
回答 1查看 1.8K关注 0票数 4

我在chrome浏览器上使用带有IndexedDB适配器的pouchDB,我想计算每个IndexedDB数据库的大小。我使用https://github.com/jonnysmith1981/getIndexedDbSize/blob/master/getIndexedDbSize.js中的代码进行计算。

我发现数据库的总大小远远大于webkit的临时存储使用量。

下面的屏幕截图是我的应用程序使用的总存储空间(255MB)。

您将看到有5个数据库保存在IndexedDB中。下面的输出是每个数据库大小的计算结果。您将看到总大小约为389MB。我想知道为什么它们有很大的不同。哪一个是正确的?

代码语言:javascript
复制
--------- _pouch_products -------------
VM1633:51  - attach-seq-store   : 0 B
VM1633:51  - attach-store   : 0 B
VM1633:51  - by-sequence    : 86.7 MB
VM1633:51  - detect-blob-support    : 2 B
VM1633:51  - document-store : 92.3 MB
VM1633:51  - local-store    : 6.1 KB
VM1633:51  - meta-store : 96 B
VM1633:57 TOTAL: 179.0 MB

--------- _pouch_transactions -------------
VM1633:51  - attach-seq-store   : 0 B
VM1633:51  - attach-store   : 0 B
VM1633:51  - by-sequence    : 13.7 KB
VM1633:51  - detect-blob-support    : 2 B
VM1633:51  - document-store : 2.2 KB
VM1633:51  - local-store    : 4.2 KB
VM1633:51  - meta-store : 96 B
VM1633:57 TOTAL: 20.2 KB

--------- _pouch_products-mrview-4c294f20854f412a71c9e7cf2f9cc58f -------------
VM1633:51  - attach-seq-store   : 0 B
VM1633:51  - attach-store   : 0 B
VM1633:51  - by-sequence    : 11.9 MB
VM1633:51  - detect-blob-support    : 0 B
VM1633:51  - document-store : 35.3 MB
VM1633:51  - local-store    : 15.1 MB
VM1633:51  - meta-store : 136 B
VM1633:57 TOTAL: 62.3 MB

--------- _pouch_products-mrview-fdca57d512425c6ed0f20311a4f8d6d1 -------------
VM1633:51  - attach-seq-store   : 0 B
VM1633:51  - attach-store   : 0 B
VM1633:51  - by-sequence    : 86.2 MB
VM1633:51  - detect-blob-support    : 0 B
VM1633:51  - document-store : 44.2 MB
VM1633:51  - local-store    : 17.4 MB
VM1633:51  - meta-store : 136 B
VM1633:57 TOTAL: 147.7 MB
--------- _product_alerts -------------
VM1633:57 TOTAL: 0 B
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-06 04:41:10

Indexed DB API不提供查询数据库(或存储/索引)大小的方法。将键和值转换为字节也是由浏览器执行的,对于脚本是不可见的。因此,脚本必须进行近似,例如,当序列化为字符串时,计算存储中所有键和值的大小。

Chrome中的索引DB实现使用名为leveldb的后备存储,该存储具有各种大小优化,例如使用另一个名为"snappy“的库进行键前缀压缩和值压缩。字符串也可以通过多种方式序列化为字节(例如,JS字符串是每个字符16位,可以简单地存储为每个字符2个字节,或者将UTF-8编码为每个字符1-4个字节)。当数据被删除或覆盖时,后备存储也会懒惰地压缩,因此它可能会暂时占用比所需更多的空间。

这些优化对脚本来说也都是不可见的,而且所有的优化都会在不同的浏览器上有所不同,所以近似值将是...近似。考虑到所有这些,389MB的预估与浏览器报告的255MB相比已经相当不错了!

在Chrome中,我们正在试验通过navigator.storage.estimate()应用程序接口报告的每种类型的细分,它会给出每种存储类型的确切值(例如索引数据库与缓存...),尽管它仍然不会给出每种数据库或每种对象存储的值。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55472444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档