如何提高 Sencha Touch 2.x 应用程序的性能

Posted

技术标签:

【中文标题】如何提高 Sencha Touch 2.x 应用程序的性能【英文标题】:How to improve performance for Sencha Touch 2.x application 【发布时间】:2012-08-24 12:07:42 【问题描述】:

我一直致力于为 android 和 iPhone 开发 Sencha Touch2 应用程序。虽然我不是移动新手,但我仍在学习 Sencha Touch 和 ExtJS。

我的应用程序有几个屏幕,每个屏幕上都有 ListView。我的应用程序遵循 Sencha MVC 模式。它使用卡片布局,放置在视口上,并在其上添加不同的表单/组件。发出一个 AJAX 请求以使数据可用于所有屏幕。作为响应,我得到 1000 条记录的 JSON 响应。下面给出了示例 Json 响应。

[
    "key1": "Similarities between Operations and Projects",
    "value1": "Some Value",

    "key2": "Differences between Operations and Project",
    "value2": "Some Value",
.... , , 

]

我必须解析 JSON 并更新存储,以便我的列表将显示所有内容。我尝试了两种方法

    直接使用代理到商店 手动应用循环并将记录添加到存储

但在这两种方式中,应用程序都非常慢。

我了解 javascript 可能有 1000 条记录是巨大的。但我想了解,如果我无论如何都能做得更好。

我已经在 stack-overflow 上进行了搜索和搜索(粘贴在下面的链接),但是,没有发现任何令人满意的结果。

PhoneGap 1.4 wrapping Sencha Touch 2.X - What about performance?

我的想法: 当前,所有记录/ JSON 响应对象都存储为全局对象。我可以通过将其存储到 SessionStore 或 LocalStore 来减少。这个说法有效吗?

请帮助我了解我是否可以改进它。

【问题讨论】:

你的sencha项目有多少浏览量 @Ram,我有大约 6 个屏幕 第一件重要的事情是您只需要在需要时创建视图我的意思是您必须动态创建视图,方法是删除屏幕上不可见的视图并创建需要的视图显示 一次1000条记录已经不少了,为什么不直接实现分页呢? 【参考方案1】:

有点难以回答这个问题,基于应用程序如何缓慢的复杂性。

加载缓慢吗?

实现分页肯定会有所帮助,我无法想象 1k 记录的 json 返回是即时的事情。

寻呼是你的朋友。

在您的浏览器中分析加载时间,并尝试解决您的问题。 (这通常可以解决我在这方面遇到的 99% 的问题)

延迟吗?

Rescoping 提高了速度,但同样,考虑在 JS 中实际使用范围等往往是过度优化(ExtJs 在其 API 中有足够多的奇怪位,这是基于此的,我认为这是一场失败的战斗)。

如果你去看vids on performance,他们会就动态创建的组件、销毁任何不活动的东西等提供建议,但这(至少对我来说)是内存管理的事情。

TL:DR:

根据个人经验,我有 40x10 的网格在 sencha touch 中滞后,我想 1000x1 的网格会让你陷入停顿。

在服务器端进行管理,您的烦恼就会消失 :)

【讨论】:

以上是关于如何提高 Sencha Touch 2.x 应用程序的性能的主要内容,如果未能解决你的问题,请参考以下文章

将 Sencha Touch 1.X 升级到 Sencha Touch 2.X

如何为 Sencha Touch 2.x 应用程序生成脚手架?

适用于 HTC One 手机的 Sencha Touch 2.X 解决方法

如何在 Sencha Touch 应用程序中禁用增量更新?

如何将 Sencha Touch 应用程序集成到 Cordova XCode 项目中?

Sencha Touch 2 如何在 Windows 上构建 iOS 应用程序?