0

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

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

我观察到的是,在使用这种方法插入数据集时,Chrome 的内存使用量上升到大约 2GB。此外,由于保存到 localStorage 是同步的,这会阻塞 DOM,并且应用程序会在 30 秒内无响应。

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

  1. localForage 是异步的,因此应用程序保持响应
  2. 内存使用量根本没有攀升

但是,将数据写入索引数据库大约需要10 分钟。前 5 分钟,CPU 处于 30% 左右,没有任何内容写入索引数据库。最后 5 分钟 CPU 停机,写入速度缓慢(可能 10 条记录 / 秒)。

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

4

1 回答 1

1

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

在此处输入图像描述

于 2016-02-10T20:13:34.873 回答