2011-12-08 10 views
0

仮定:2つのアクション(アクション名= A、B) & 2つのビュー、各アクションの1つのビュー。行動のための2つまたは1つのリクエストをサーバーに:Asp.net Mvcビューで " - @ Html.Action(" ") - "を使用してサーバーに2つのリクエストを行います

ビュー「」今、私の質問は、「」(ユーザーからWebサーバ1へ2つの要求を行うアクションの観点からアクション「B」の内容を尋ねるDOESさ

@*codes*@ 
    @Html.Action("B")  
    @*calling action 'B' to render its content from view of action'A'*@ 
@*more codes*@ 

以下のようになります。誰がアクションAの内容を要求したのか、サーバーが内部的に要求したもの(またはそのようなもの)または、ビューからアクションを呼び出すときにパフォーマンスが考慮されているかどうかを確認する必要があるかもしれません。

答えて

0

あなたはには、呼び出す(ほとんどの)デフォルトの要求パイプラインをオンMVCにサーバーに全く新しい要求 を作成している Html.Action()経由ビューからアクションをレンダリングしたり Html.RenderAction()任意の時間を。追加のウェブリクエストは作成されていませんが、やや高価です。

標準リクエストと比較したときの '子アクション要求'のオーバーヘッドを減らすための考慮事項がMVCチームによって行われましたが、それでもMVCパイプラインは2回に分けて実行されます。

はい、RenderAction(低速)とRenderPartial(高速)のパフォーマンスには大きな違いがあります。 RenderActionは定義上、ASP.NETのパイプライン全体を実行してシステムに新しいHTTP要求を表示する必要がありますが、RenderPartialは既存のビューに余分なコンテンツを追加するだけです。

-Bradウィルソン、ASP.NET MVCチーム

source)シニア現像

+0

これをバックアップする引用がありますか?私にはまともに聞こえません... – Charlino

+0

私は確信しています!私の編集を見てください。 –

0

はい、コントローラが初期化され、ビットと呼ばれるアクションは、それが同一のコンテキスト内で実行されます。しかし、2番目のhttp要求には、すべてのネットワークオーバーヘッドが含まれているわけではありません。

このように実行するといくつかのパフォーマンス上の欠点があるかもしれませんが、実際にどの程度のダメージが発生しているかを見るためにはプロファイリングが実際に行われます。

関連する問題