我正在从 Firebase 数据库中检索大型活动的参与者列表 - 大约 4,000 名参与者。每个都表示为大约 500 字节的 JSON 对象。
检索数据集后,我试图将其存储在持久的本地存储中。最初,我尝试使用 Lawnchair.js 使用标准 DOM 存储(localStorage)。
我观察到的是,在使用这种方法插入数据集时,Chrome 的内存使用量上升到大约 2GB。此外,由于保存到 localStorage 是同步的,这会阻塞 DOM,并且应用程序会在 30 秒内无响应。
我认为这可能是 Lawnchair 问题,所以我现在尝试使用 IndexedDB 切换到 localForage。这有两个很大的改进:
- localForage 是异步的,因此应用程序保持响应
- 内存使用量根本没有攀升
但是,将数据写入索引数据库大约需要10 分钟。前 5 分钟,CPU 处于 30% 左右,没有任何内容写入索引数据库。最后 5 分钟 CPU 停机,写入速度缓慢(可能 10 条记录 / 秒)。
因此,我的问题是:这些行为是否正常,如果是,我怎样才能将这些数据(大约 2Mb)存储在持久的本地存储中,而不需要花费很长时间或消耗大量内存?