【发布时间】:2014-07-06 14:54:56
【问题描述】:
我将 ~2500 张图像作为附件存储在 CouchDB 的同一文档中。这些图像大约占用 15MB 的硬盘空间,生成的 CouchDB 大约为 17MB。
当我通过 PouchDB 将此文档推送到我的客户端时,我看到生成的数据库超过 40 MB。我按照以下步骤进行了一些测试:
将 X 图像附件上传到 CouchDB 文档。
Compact CouchDB
完全清除客户端缓存
重新加载客户端(在我的应用中,我在重新加载时复制数据)。
这是结果:
number of attached files | Total size (KB) in HD | Inc | Size in Indexed DB | Inc
17 129 207
27 168.2 39.2 267 60
37 219.6 51.4 335 68
47 275.5 55.9 414 79
57 327.7 52.2 493 79
67 384.9 57.2 579 86
77 428.5 43.6 654 75
所以,看来:
PouchDB 向每个附件添加大约 2K 控制数据。
当添加更多附件时,此控制数据会增加。 (1.6K -> 2.3K -> 2.6K -> 2.8K...)
图像在 CouchDB 和 PouchDB 中都有 content_type:image/png。我知道这应该防止将它们存储为base64。我说的对吗?
以前有人看过吗?有没有人能够解决它? 如果要在 iOS 50MB 空间限制内安装应用程序,这是一个大问题。
编辑
我继续检查了 pouchDB 中一些图像与原始文件的大小:
文件 1:原始大小 = 7.4K / PouchDB 大小 = 10.2K
文件 2:原始大小 = 5.1K / PouchDB 大小 = 6.8K
所以我认为在 PouchDB 中存储附件时大小的增加不是来自任何控制数据(至少它不相关),而是来自二进制文件在浏览器 IndexedDB 中的存储方式(我使用 Chrome 进行这些计算)。
那么,为了避免 PouchDB 中二进制大小的增加,是否需要做任何额外的事情?
【问题讨论】: