2009-07-17 20 views
8

は、ASP.NET MVCアプリケーションでASP.NET Tracingを有効にした後、時間計算統計は、私がロードする7〜9秒を取っているページを持っている5000ASP.NET MVCで完全なtrace.axdを生成するにはどうすればよいですか?私のアプリケーションで

の要因ではオフでした。これは、FirebugとIISログファイルの "time-taken"フィールドの両方によって裏付けられています。

しかし、(web.configを使用して)アプリケーション全体のトレースをオンにしてトレース出力を表示すると、トレース出力が表示されます。これは、クライアントに戻ったページだけです。 「Begin PreInit」から「End Render」までの時間は0.001秒未満です。

Trace.axdはWebFormsを念頭に置いて構築されており、MVCは従来のページライフサイクルをバイパスしているためです。

OnActionExecuting/OnActionExecutedの開始時と終了時にカスタムトレースを追加しても、時間はまだ0.1秒未満です。

誰でもASP.NET MVCでtrace.axd出力レポートの正確な実行時間を得るためにフックする必要があることを知っていますか?

答えて

7

アクションメソッド自体の時間が実行の大きな部分ではない可能性があります。 OnResultExecuting/OnResultExecutedの間の時間を確認してみてください。これは、基本的にHTMLでページをレンダリングする時間ですが、OnActionExecuting/OnActionExecutedは(基本的に)ビューのデータを設定する時間です。

LINQを使用している場合、ページがレンダリングされるまで(モデルが列挙される)、データクエリ自体が延期されることに注意してください。つまり、ページの複雑さに起因するものではなく、結果を実行するのに時間が費やされてもデータアクセスが遅くなることがあります。

+1

怠惰なロードについて+1良い点 – RedFilter

+0

いいえ、OnResultExecutedは9秒の遅延を示します。なぜ私は(私はいつも.ToList()私のLinqをモデルに割り当てる前に、それは遅延実行ではありません。私は私の厄介なネストされたマスターページが原因かもしれないと思います。) – Portman