我從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