javascript - 使用 350000 条记录填充/分发 indexedDB [数据存储] 的最有效方法

标签 javascript performance indexeddb ydn-db

因此,我有一个主要的 indexedDB 对象存储库,其中包含大约 30.000 条记录,我必须在这些记录上运行全文搜索查询。使用 ydn fts 插件执行此操作会生成第二个包含大约 300.000 条记录的对象库。现在,由于生成这个“索引”数据存储需要很长时间,我认为分发索引的内容也会更快。这反过来生成了一个大约 7MB 的 zip 文件,在客户端解压缩后提供了超过 40MB 的数据。目前我循环遍历这个数据,一个一个地插入它(异步,所以回调时间用于解析下一行)大约需要 20 分钟。当我通过网络 worker 在我的应用程序后台执行此操作时,这并非完全 Not Acceptable ,但仍然感觉效率极低。一旦它被填充,数据库实际上足够快,甚至可以在中高端移动设备上使用,但是移动设备上 20 分钟到 1 小时的填充时间简直是疯了。有什么建议可以改进吗?或者是最小化记录数量的唯一选择? (这意味着要编写我自己的全文搜索……这不是我所期待的)

最佳答案

您的数据量对于移动浏览器而言相当大。除非用户经常使用您的应用程序,否则不值得将所有数据发送给客户端。您应该使用服务器端进行全文搜索,同时捕获机会,如 this example app 所示。 .这样,用户不必等待全文搜索索引。

全文搜索需要索引除一些词干之外的所有标记(词)。仅当 lang 设置为 en 时才会激活词干提取。您应该分析您的应用程序哪些部分需要时间。我猜浏览器占用了大部分时间,在这种情况下,除了并行化之外你不能做太多优化。发送索引数据(如上所述)不会有太大帮助(但请通过比较确认)。 Web worker 也无济于事。我假设您的应用程序不会因索引而导致响应缓慢。

除了索引时间慢之外,您还有其他提示吗?

关于javascript - 使用 350000 条记录填充/分发 indexedDB [数据存储] 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815784/

相关文章:

r - R 数据表中较慢的 ifelse 的替代方案

android - 如何检查互联网是否正常工作?不是指残疾与否?在安卓中

javascript - IndexedDb 有标准的命名约定吗?

javascript - JavaScript 表单中的边框颜色不会覆盖

javascript - 如何从点击的数字中获取值(数字)

Ruby 数组适配器

indexeddb - 您可以在使用 pouchdb 时使用 indexedDB 永久存储数据吗

javascript - "The keyPath option is not a valid key path"尝试用变量分配 keyPath

javascript - 如何防止损坏的音频 src 在控制台中打印错误消息?

javascript - 使子导航向下滑动和向上滑动切换