2012-01-25 108 views
15

我有一个小型的网络应用程序。总共7页,3.6 KB index.html和855.5 KB。唯一奇怪的事情,我已经是一个数据库(〜500KB)在Javascript中有许多线,如:如何加快jQuery的手机/手机?

$.data(db,'Aarstraße',['34236:1','34246:2','34270:4','34290:6',...]); 

我测试的iPod/iPhone和Android(HTC魔术),这是非常缓慢:

启动

  • iPhone:14秒
  • 安卓21秒

简单的页面TRA nsition(幻灯片)

  • iPhone:3-4秒
  • 安卓:4-6秒

我怎样才能让这个快?

我已经删除了box shadow

更新

我删除数据库中留下444.7KB页共。现在它在Android上运行得更快。与一个iPhone大致相同。它仍然感觉非常缓慢。

更新2

this question后,我切换到latest jquery mobile build。它将慢速Android设备的页面转换改进为每个转换约2秒。版本1.1的发布将为mid/late February

+1

的JavaScript库?您应该考虑只根据需要提供数据。 –

+1

@ stian.net如何?它只包含1800行。 – PiTheNumber

+1

500kb是非常多的移动应用程序.. –

回答

11

有几件事情可以做:

  1. Get to deviceready faster
  2. 最小化您的JS代码使用YUI Compressor
  3. 将您的脚本标签移动到正文标签的底部。

正如您已经提到的,您已经将数据库移出了可能在启动时花费大量时间的等式。

5

你用jQuery-mobile做什么?它的表现非常差,你不应该把它放在需要的更大的元素上。详情请参阅this discussion about jquery-mobile。它正在做大量的DOM搜索操作,因为它通过修改DOM树来工作。至于我的测试,即使在桌面浏览器上,它的运行速度也很慢。

+6

所以解决方案是不使用jQuery,hm ...好吧 – PiTheNumber

+2

使用jQuery很好,特别是jQuery-mobile被一些人认为对PhoneGap反应不佳。以下是对原因的讨论:http://apachecordova.blogspot.com/2012/11/who-is-murdering-phonegap-its-jquery.html – garromark

+0

通过比所需要的更大,我的意思是例如,不渲染整个列出是否只显示其中的一部分。您不想向用户展示具有100个或更多位置的下拉菜单!如果你想要,请不要它,它会滚动他们的手指到骨头! –

4

尝试不转换。即使使用jQuery 1.1,页面转换也可以在iPhone上实现闪烁和缓慢。

要全局下降页面转换,只需添加以下jqm.glocal.config.js

$(document).bind("mobileinit", function(){ 
    $.mobile.defaultPageTransition="none" 
});