使用 PouchDB 的 Ionic 应用程序性能问题

Posted

技术标签:

【中文标题】使用 PouchDB 的 Ionic 应用程序性能问题【英文标题】:Ionic app performance issues using PouchDB 【发布时间】:2016-12-12 01:23:51 【问题描述】:

我正在调试使用 PouchDB 的 Ionic 应用程序 一页在启动时特别慢,检查它我发现在 8 秒的记录中,pouchdb 使用了约 99% 的 CPU 时间。

pouchdb 包含在我称为localdb 的角度服务中。

chrome-dev-toolsTimeline 标签中使用搜索,我发现localdb 被提及218 次,pouchdb 被提及14972 次。

我可以做些什么来了解发生了什么?

编辑:我发现这段代码在 android 设备上(左栏)比在浏览器中(右栏)慢 8 倍

console.time('READ--'+ID)
console.time('WRITE--'+ID)
LDB.query('my_index',  //stored index
    key: ID,
    include_docs: true
).then(function(data) 
    console.timeEnd('READ--'+ID)
    //DO THINGS
    obj._rev = data._rev
    LDB.put(obj).then(function(ldata) 
        console.timeEnd('WRITE--'+ID)
    );

【问题讨论】:

【参考方案1】:

我认为时间轴搜索结果是时间轴生命周期中的引用计数,它通过许多不同的事件(脚本、渲染、绘画)传递。这并不意味着您的代码多次调用 db 函数。此搜索字段用于过滤时间线上的事件类型,例如解析 html。见How to Use the Timeline Tool: Search。

我在最后一两个小时内尝试熟悉PouchDB,但显然要让你了解很多。我设法通过使用文档创建了一个示例应用程序。

我发现你可以通过以下方式获得很多调试信息:

PouchDB.debug.enable('*');

它可能会让您了解瓶颈在哪里。

https://jsfiddle.net/xmr5ksov/

文章12 pro tips for better code with PouchDB 也可能会为您提供一些关于优化数据库和您正在调用的查询的想法。

【讨论】:

嗨,吉迪恩,很抱歉回复晚了。我会尝试使用调试PouchDB.debug.enable('*');。感谢您的帮助

以上是关于使用 PouchDB 的 Ionic 应用程序性能问题的主要内容,如果未能解决你的问题,请参考以下文章

Ionic PouchDb Sqlite 插件问题

ionic 上的 Pouchdb 和 Cordova-sqlcipher-adapter:有可能吗?

ionic 运用pouchdb/sqlite 数据库做本地存储

跨平台存储与同步:IonicCouchbase和PouchDB结合使用范例

如何将视频文件与 ionic 混合应用程序和服务器同步

我们可以使用 ionic 框架将视频存储在 sqlite 数据库中吗?如果可以,我们如何存储它?