jQuery Mobile在iPad上很慢

问题描述:

我正在开发一个在客户端使用jQuery Mobile的Web应用程序,在服务器端使用PHP & MySQL。该应用程序在桌面浏览器(如Safari,Chrome和Firefox)上运行良好。但是,在iPad上 - 应用程序从主屏幕作为Web剪辑打开 - 应用程序的性能会更差。滚动工作正常,但点击链接从服务器加载页面变得非常缓慢。jQuery Mobile在iPad上很慢

iPad屏幕的记录显示(例如)在敲击后需要0.3秒,然后突出显示该元素并显示加载程序。从开始1.0秒后,打开页面的下半部分被渲染/显示(在加载器下方)。然后在显示页面的上半部分之前又需要0.6秒,从而使加载页面所需的总时间为1,6秒。显示此过程的视频(以原始速度的25%播放)可以找到here

Loading process

据我所知,加载页面(通过WiFi)需要一些时间,但我不明白为什么渲染页面的上半部分需要额外的0.6秒。假设页面在1.0秒后完全加载(因为页面的下半部分已经显示出来了),我认为这也需要相当多的时间,因为在我的Mac上Safari只需要0.5秒左右。但是这可能会导致我的iPad处理器速度较慢以及WiFi连接滞后。

希望有人知道一些(客户端)优化使应用程序执行(或感觉)更快。我已经禁用jQuery Mobile中的动画,我会尝试自己优化服务器端。


也许这一切都是要了解的重要:

  • 所有页面我从服务器返回有一个完整的<head>多引用样式表和脚本。 jQuery Mobile会忽略<head>还是饮食这会带来处理能力?
  • 我在大多数页面上都有一个固定的页眉和页脚。我正在使用<div data-role="…" data-position="fixed" data-id="…" data-tap-toggle="false">来完成此操作。页眉和页脚也包含在所有页面中。
  • 大多数报头具有在左侧(<a data-role="button">标签)的按钮,在中间(<h1>标签)标题和右侧(<div data-role="controlgroup">)含有两个按钮(<a data-role="button">)一个controlgroup。
  • 标题中的一个按钮设置为将页面预取到其链接的位置(<a href="…" data-role="button" data-rel="dialog" data-prefetch>)。该按钮包含在每个页面中,但链接的href在每个页面上都是相同的。 这可能是什么..?
  • 所有页脚有一个导航栏(<div data-role="navbar">)与几个项目(<li><a>)。
  • 某些页面是带有过滤功能的列表视图(<ul data-role="listview" data-filter="true">)。目前只包含一些项目(<li><a>,最多5个)和列表分隔线(<li data-role="list-divider">)。
  • 其他页面为表格(<form>),其中包含列表视图(<ul data-role="listview" data-inset="true">),其中有几个表单字段(<li data-role="fieldcontain">)。

嗯,这是所有的“特殊”的东西我能想到的。如果您需要了解更多或看到一些源代码,请让我知道。

+0

我用jQuery Mobile开发了一个内部Web应用程序开发框架。我很高兴地说,这个性能在框架和产生的网络应用程序中都达到了相当高的水平。 这让我想,你的网页上可能有东西可能会消耗大量的处理?你能否看到,发现并发布这些零件以便SO可以有更好的外观? – kishu27

+0

@ kishu27我已经添加了一些描述我的应用程序的技术细节。 – Jonathan

+0

如果我处于您的情况,我会开始删除页面渲染的部分内容(评论它),并查看影响性能的因素。你提到的事情是我也做的,除了#1。而且它们不会影响性能。 – kishu27

问题是(大部分)通过更新到jQuery Mobile 1.1来解决。该版本包含一些与性能相关的修复/优化。

listviews极其缓慢......如果您正在pagebefore/show中填充列表;尝试最初添加较小数量的li s,并在小超时后追加剩余的数量。

+0

我的列表目前只包含一些内容。五我认为,所以不应该是问题的原因。虽然它可能是未来要记住的东西,谢谢提及! – Jonathan