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。
据我所知,加载页面(通过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">
)。
嗯,这是所有的“特殊”的东西我能想到的。如果您需要了解更多或看到一些源代码,请让我知道。
问题是(大部分)通过更新到jQuery Mobile 1.1来解决。该版本包含一些与性能相关的修复/优化。
长listviews
极其缓慢......如果您正在pagebefore/show中填充列表;尝试最初添加较小数量的li
s,并在小超时后追加剩余的数量。
我的列表目前只包含一些内容。五我认为,所以不应该是问题的原因。虽然它可能是未来要记住的东西,谢谢提及! – Jonathan
我用jQuery Mobile开发了一个内部Web应用程序开发框架。我很高兴地说,这个性能在框架和产生的网络应用程序中都达到了相当高的水平。 这让我想,你的网页上可能有东西可能会消耗大量的处理?你能否看到,发现并发布这些零件以便SO可以有更好的外观? – kishu27
@ kishu27我已经添加了一些描述我的应用程序的技术细节。 – Jonathan
如果我处于您的情况,我会开始删除页面渲染的部分内容(评论它),并查看影响性能的因素。你提到的事情是我也做的,除了#1。而且它们不会影响性能。 – kishu27