2009-08-25 10 views
3

どちらが最高のパフォーマンスを示しますか。私は記事のリストを含むリスト配列を持っています。私は記事をリストするとき、私は1つの記事を表示するRenderPartialを持っていて、親ページはすべての記事のループを通ります。 Renderpatialは親ページループ内にあります。これについて最善の方法は何ですか?部分ビュー内のASP.NET MVC - RenderPartialまたはOutside RenderPartialのループ用

答えて

7

ループすることができます場合。 RenderPartialInternal

  • RenderPartialInternalが新しいViewDataDictionaryと新しいViewContext

  • RenderPartialInternal呼び出しを作成

    1. RenderPartial呼び出し:あなたがれるrenderPartialを呼び出すたびに、次のものが(MVCソースファイルの礼儀を)起こりますビュー

    2. を見つけてインスタンス化するFindPartialView

      FindPartialViewは、ビューのすべての登録済みビューエンジン(通常は1つ)を検索し、コントローラコンテキストとビュー名をキーとして使用します。各ビューエンジンは、ビューがサポートしているすべてのパス(例:ビュー/コントローラ/ view.aspx、ビュー/コントローラ/ view.ascx、ビュー/共有/ view.aspxなどのビューは、ビューのRenderメソッドが呼び出されるこのステップを

    3. を加速するためにメモリキャッシュから返すことができます。私は、標準のWebFormViewメソッドの内部動作の追跡をスタックから13レベル下に失った。 Renderは、内部ビューに必要な多数のコンテキストオブジェクトを構築し、ビューを実行する権限をチェックし、任意のサーバーコントロールのイベントをフックアップし、さらに何が必要かを決定するために要求オブジェクトを再検査します。実際にビューをレンダリングした後、ビューは作成したコンテキストを巻き戻します。

    全体として、これらのどれも悪くない。それはすべて、マシンのCPUとRAMの内部で発生します。これは、コントローラで発生する一般的なデータベースへのアクセス以上のものです。このプロセスは、最初にビューがロードされたときにのみディスクに書き出す必要があります(ただし、ファイルを検索してビューをコンパイルする必要があります)。 ASP.NET MVCは、高いレベルのパフォーマンスを維持するためにビューレンダリングプロセスを最適化する必要がありました。

    はいえ、これはかなりある、とあなたが一つのリクエストで、それを複数回実行する避けることができれば、それはアクションメソッドの応答時間を改善するのに役立ちます。数回 によって、あなたの意見のパフォーマンスが向上します

  • 0

    一つのことは、あなたのweb.configファイル内Debug=falseを設定することです(つまり、リリースモードで展開)(MVCエンジンはすべてのビューをキャッシュします。この場合

    含むパーシャルを)これらを使用しようとすると、その場所を解決してにロードしようとしません。

    関連する問題