5

クライアント側で jQuery Mobile を使用し、サーバー側で PHP と MySQL を使用して Web アプリケーションを開発しています。このアプリケーションは、Safari、Chrome、Firefox などのデスクトップ ブラウザでうまく機能します。ただし、アプリケーションがホーム画面から Web クリップとして開かれる iPad では、アプリケーションのパフォーマンスが大幅に低下します。スクロールは正常に機能しますが、リンクをタップしてサーバーからページをロードすると非常に遅くなります。

iPad の画面の記録は、(たとえば) タップした後、タップされた要素が強調表示されてローダーが表示されるまでに 0.3 秒かかることを示しています。開始から 1.0 秒後、開いたページの下半分がレンダリング/表示されます (ローダーの下)。次に、ページの上部が表示されるまでにさらに 0.6 秒かかり、ページの読み込みに必要な合計時間は 1.6 秒になります。このプロセスを示すビデオ (元の速度の 25% で再生) は、ここにあります。

読み込みプロセス

ページの読み込み (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">2 つのボタン ( ) を含むコントロール グループ ( ) があり<a data-role="button">ます。
  • ヘッダーの 1 つのボタンは、ページをリンク先にプリフェッチするように設定されています ( <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">) です。

まあ、それは私が考えることができるすべての「特別な」ものです。もっと知りたい、またはソースコードを見る必要がある場合は、私に知らせてください。

4

2 に答える 2

2

この問題は、jQuery Mobile 1.1 にアップデートすることで (ほとんど) 修正されました。そのバージョンには、パフォーマンス関連の修正/最適化が含まれていました。

于 2012-07-24T10:39:59.857 に答える
2

longlistviewsは非常に遅いです... pagebefore/show でリストを作成している場合。最初に少ない数の をli追加してみて、短いタイムアウトの後に残りを追加してください。

于 2012-06-18T17:13:13.943 に答える