如何在持久性本地存储中存储大型(2Mb)数据集?

时间:2016-02-10 17:14:05

标签: local-storage indexeddb lawnchair localforage

我正在从Firebase数据库中检索大量与会者的参与者 - 大约有4,000名与会者。每个都表示为大约500字节的JSON对象。

检索数据集后,我试图将其存储在持久性本地存储中。最初我尝试使用标准DOM存储(localStorage)使用Lawnchair.js。

我观察到的是,在使用此方法插入数据集时,Chrome的内存使用率上升至2GB左右。另外,因为保存到localStorage是同步的,所以这会阻止DOM,并且应用程序会在30秒内无响应。

我认为这可能是Lawnchair的问题,所以我尝试使用IndexedDB切换到localForage。这有两个很大的改进:

  1. localForage是异步的,因此应用程序保持响应
  2. 内存使用率根本没有攀升
  3. 但是,将数据写入索引数据库大约需要 10分钟。前5分钟,CPU占30%左右,没有任何内容写入索引数据库。最后5分钟CPU下降,写入开始缓慢(可能是10个记录/秒)。

    我的问题是: 这些行为是否正常,如果是这样,我如何将这些数据(大约2Mb)存储在持久的本地存储中,而不需要花费很长时间或消耗大量内存?

1 个答案:

答案 0 :(得分:0)

如果有人感兴趣,我已经将问题缩小到这样一个事实:使用localforage我一直在尝试插入数千个键值对,其值为JSON对象。这需要很长时间。而是首先调用JSON.stringify(obj)并插入字符串作为值 - 超过100倍。

enter image description here