2

プログラムで作成されたRadGridをレンダリングするaspxページがあります。約15列、1000行強です。ロードから終了まで約6〜7秒かかりますが、そのうちサーバー側の処理はわずか3秒です。私は間違いなくこれを最適化することができます。しかし、残りの4秒間は、クライアントがサーバーからの応答を受信した後に発生しているようです。

  • ボタンをクリックした後、グリッドは6〜7秒後にのみロードされます。
  • しかし、Fiddlerは全体の経過時間として2.2秒を示しています。
  • AjaxLoadingPanelに「Loading...」を表示するGIFがありますが、最後の4秒間はハングします(アニメーション化されません)。

Chromeのタイムラインを確認しましたが、次のように表示されます。 ここに画像の説明を入力してください

  • 2秒程度でページリクエストを送信します(Send Request)。GIF読み込みアニメーションが表示され始めます。
  • 約4.2秒で、GIFアニメーションが停止します。次の3〜4秒間は、タイムラインに「XHRReadyStateChange」が表示されます。
  • 約8.5秒で、GIFアニメーションが表示され、ページが完全に読み込まれます。
  • Fiddlerによると、ページの読み込みには合計で2.2秒かかりました。

これに基づいて、ブラウザが最後の4秒間ページを解析およびレンダリングしようとしていると推測しています。私は今何をしますか?理由をさらに掘り下げることはできますか?

  • さまざまなScriptResource.axdファイルからの「レイアウト」イベントがたくさんあるようです。これらはすべてTelerikによって生成されます。
  • レイアウトレコードに対して、「強制同期レイアウトはパフォーマンスのボトルネックになる可能性があります」という警告も表示されます。これは私が制御できるものですか?.axdファイルを(カスタムHTTPハンドラーを使用して)単一のファイルに結合することは、何らかの形で役立ちますか? ここに画像の説明を入力してください

これらはどういう意味ですか?Radgridがブラウザが処理するには多すぎるコードを出力しているということですか?

  1. ページングは​​オンになっていますが、顧客は1ページあたり少なくとも1000レコードを見たいと考えています。
  2. 並べ替え、ページング、行の選択、行の右クリックメニューなどはすべて有効/使用可能です。

ご協力いただきありがとうございます。さらに情報が必要な場合はお知らせください。

4

1 に答える 1

2

あなたのタイムラインを見ると、JS コードの実行に 1 秒しか使われていません。残りの時間はレイアウトに使用されました。何らかの方法でコードを変更し、レイアウトを強制する場所の数を減らす必要があります。このドキュメントはあなたにとって興味深いものになると思います。http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in-webkit.html

もう 1 つの方法は、ビューポート スキーマを使用することです。例として、ページの表示部分に対してのみ行を作成し、非表示部分に必要なサイズの空の div を使用する必要があります。データ量が非常に多い場合に使用するのが一般的な方法です。例として、ソース パネルはそのように機能し、50 万行のコードを含むファイルを表示できます。

タイムラインパネルでも同じテクニックが使用されています。

于 2012-11-22T19:11:18.647 に答える