2015-03-25 58 views
2

我們試圖預先將我們的Web應用程序負載的大量數據緩存到索引數據庫中。從我的性能測試來看,桌面瀏覽器(例如Internet Explorer)的速度不錯,我可以在大約2秒內插入10,000條記錄。但比較iPad上完全相同的功能則會降至30秒。這種比較只是讓我失望了。提高大規模索引數據庫的性能插入

有誰知道任何提示或技巧來將大型數據集插入到索引數據庫中。我不知道它是否有可能,但是如果我們可以建立一個indexedDB服務器端的副本,並預先填充所有數據,然後將其發送給客戶端,並將其存儲到瀏覽器中。這些線是否可行?

謝謝

+0

看看這個問題http://stackoverflow.com/questions/25914265/indexeddb-slow-when-inserting/25924081#25924081 – 2015-03-30 15:12:42

+0

我不知道它改變任何東西,但如果您在臺式機上測試Chrome,則差異可能很大程度上是由於Chrome和Safari之間的差異,並非完全歸因於桌面和移動。請參閱http://stackoverflow.com/questions/41824512/indexeddb-has-bad-performance-on-ios/42604890#42604890 – nbrustein 2017-03-05 05:33:49

回答

0

你的數據是如何存儲在indexeddb中的?您是否在使用多個對象庫的單個對象存儲庫中執行所有操作?你是否立即需要所有的緩存數據?

如果您只有一個對象存儲,您可以先存儲您初始需要的所有數據,然後提交該事務併爲其餘所有數據創建一個新對象。通過這種方式,您可以在插入其他數據的同時開始檢索初始數據。 IndexedDB是異步的,所以它應該阻止你。

如果您有多個對象存儲,則可以使用相同的stratigy。首先立即填滿你需要的對象庫並延遲其他對象庫。

或者可能考慮使用AppCache API而不是indexeddb api。使用這個你可以緩存一個包含你想要緩存的所有json對象的JavaScript文件。當你不需要太多的數據查詢時,情況更是如此。

0

我有大量批量插入問題(100.000 - 200.000記錄)。我已經使用Dexie庫解決了我所有的IndexedDB性能問題。它有這個重要的特點:

Dexie有踢屁股表演。它的批量方法利用了 在indexedDB中的一個不爲人所知的特性,它可以在不監聽每個onsuccess事件的情況下存儲 的東西。這可以最大限度地提高 的性能。

Dexie:https://github.com/dfahlander/Dexie.js