Javascript 提高大规模IndexedDB插件的性能

Javascript 提高大规模IndexedDB插件的性能,javascript,ios,performance,ipad,indexeddb,Javascript,Ios,Performance,Ipad,Indexeddb,我们正在尝试将web应用程序加载时的大量数据预缓存到索引数据库中。从我的性能测试来看,在桌面浏览器(如Internet Explorer)上,速度相当快,我可以在大约2秒钟内插入10000条记录。但与iPad上完全相同的功能相比,它只需30秒。这个比较让我大吃一惊 有人知道将大数据集插入indexedDB的任何提示或技巧吗。我不知道这是否可行,但我们是否可以在预先填充所有数据的情况下构建indexedDB服务器端的副本,然后将其发送到客户端,然后将其存储到浏览器。这样做可行吗 谢谢您的数据是如何

我们正在尝试将web应用程序加载时的大量数据预缓存到索引数据库中。从我的性能测试来看,在桌面浏览器(如Internet Explorer)上,速度相当快,我可以在大约2秒钟内插入10000条记录。但与iPad上完全相同的功能相比,它只需30秒。这个比较让我大吃一惊

有人知道将大数据集插入indexedDB的任何提示或技巧吗。我不知道这是否可行,但我们是否可以在预先填充所有数据的情况下构建indexedDB服务器端的副本,然后将其发送到客户端,然后将其存储到浏览器。这样做可行吗


谢谢

您的数据是如何存储在indexeddb中的?是否所有内容都在单个对象存储中?是否使用多个对象存储。是否立即需要所有缓存的数据

如果您只有一个对象存储,那么您可以从存储最初需要的所有数据开始,提交该事务并为所有其他事务启动一个新的对象存储。这样,您可以在插入其余数据时开始检索初始数据。IndexedDB是异步的,因此它应该阻止您

如果有多个对象存储,则可以使用相同的策略。首先,立即填充所需的objectstore,并延迟其他存储


或者可以考虑使用索引代替DAPI API。使用它,您可以缓存一个包含所有要缓存的json对象的javascriptfile。当您不需要对数据进行大量查询时,情况会更糟。

我遇到了大量批量插入(100.000-200.000条记录)的问题。我已经使用Dexie库解决了所有IndexedDB性能问题。它有一个重要的特点:

德克西的表演很精彩。它的批量方法利用了 indexedDB中一个不为人所知的特性,它使存储成为可能 没有听每个成功事件的东西。这加快了速度 性能达到最大


Dexie:

看看这个问题,我不确定它会改变什么,但是如果你在桌面上测试Chrome,那么差异可能主要是因为Chrome和Safari之间的差异,而不是完全因为桌面和移动设备。看见