我想對象添加到IndexedDB的一些表中的一個交易:優化的批量(組塊)物件上傳到IndexedDB的
_that.bulkSet = function(data, key) {
var transaction = _db.transaction([_tblName], "readwrite"),
store = transaction.objectStore(_tblName),
ii = 0;
_bulkKWVals.push(data);
_bulkKWKeys.push(key);
if (_bulkKWVals.length == 3000) {
insertNext();
}
function insertNext() {
if (ii < _bulkKWVals.length) {
store.add(_bulkKWVals[ii], _bulkKWKeys[ii]).onsuccess = insertNext;
++ii;
} else {
console.log(_bulkKWVals.length);
}
}
};
看起來,它工作正常,但它是不是很優化做的方式特別是如果對象的數量非常高(〜50.000-500.000)。我怎麼可能優化它?理想情況下,我想添加第一個3000,然後從陣列中刪除它,然後添加另一個3000,即分塊。有任何想法嗎?
我也做了一些基準測試,在1000個事務中插入了1000個,並猜測:[創建trasaction +獲取存儲] = 20秒,[inserts] = 10秒...第一個問題嚴重錯誤 – lisak
@buley,你有網站嗎? – MB34