我从Firebase数据库中检索大量与会者参加活动 - 大约有4,000名与会者。每个表示为大约500字节的JSON对象。如何将大型(2Mb)数据集存储在持久本地存储中?
检索数据集后,我试图将其存储在持久本地存储中。最初我尝试使用标准DOM存储(localStorage)使用Lawnchair.js。
我观察到的是,在使用此方法插入数据集时,Chrome的内存使用量上升至2GB左右。另外,因为保存到localStorage是同步的,所以这会阻止DOM,并且应用程序在30秒内无响应。
我认为这可能是Lawnchair问题,所以我尝试使用IndexedDB切换到localForage。这有2点很大的改进:
- localForage是异步的应用程序保持响应
- 内存使用情况完全不
但是爬,大约需要10分钟写数据索引分贝。前5分钟,CPU坐落在30%左右,没有任何东西写入索引数据库。最后5分钟CPU停机并开始写速度缓慢(可能为10条记录/秒)。
我的问题是这样的: 这些行为是否正常?如果是这样,我如何将这些数据(大约2Mb)存储在永久本地存储中,而不会花费时间或消耗大量内存?
有趣的是,我发现其他人谈论localForage正在缓慢写几千记录索引数据库,例如https://github.com/mozilla/localForage/issues/301。 – quijames
在尝试使用localForage(https://github.com/thgreasi/localForage-setItems)批量插入此扩展并放入一些性能计数器后,我发现现在只需17秒即可“完成”插入所有4000条记录。 但是,如果我检查索引数据库记录计数,它在我的代码完成时仍然显示为0。看到插入数量开始发生在25秒左右,需要几分钟才能完成。 – quijames
为什么不直接使用indexedDB?你为什么使用中间层? – Josh