2016-10-27 18 views
0

完了までに2000ミリ秒かかる.net MVCアクションがあります。 IE DevツールのNetworkタブのGlimpseに2000msが記録されています.HttpModuleを使用してcontext_BeginRequestとcontext_EndRequestの差を計算すると、メソッド自体が高速であるときにMVCアクションが戻るまでに時間がかかります

しかし、アクションメソッド自体のタイミングを記録すると、アクションの最初の行から最後の行までの時間はわずか300msです。 コードの私の最後の行には、ビューを生成し、その後、私は時間を記録し、その後、私はビューを返します - それも、ビューの生成が300ミリ秒以内であることを思わ:

var view = View("~/Views/Home/Index.cshtml"); 
LogMethodTime("HomeController.Index", stopwatch); 
return view; 

私は時に関連する時間を記録していますコントローラのメソッドが完了している - そして、彼らはコンストラクタからEndExecuteまでの時間が534msだけを取ることを示しています

14:40:26,554 [13] INFO - Constructor 
14:40:26,561 [13] INFO - OnAuthentication 
14:40:26,608 [13] INFO - OnAuthentication 
14:40:26,988 [13] INFO - OnActionExecuted 
14:40:27,024 [13] INFO - OnResultExecuted 
14:40:27,044 [13] INFO - EndExecuteCore 
14:40:27,088 [13] INFO - EndExecute 

asp.netパイプラインで1700msを嚥下することができ他に何してください?

私はこれをIISExpress経由でローカルに実行しています。

+0

あなたはグリンプスを使用して、データの時間とワイヤ時間をもたらし、ビューをレンダリングするための時間を見ることができます。私はあなたがここでGlimpseについて何かを指定したのを見ました。あなたの行動のためのワイヤータイムとは何ですか? –

+1

'var view = View("〜/ Views/Home/Index.cshtml ");'はビューを生成しません "。これは、* "ExecuteResult"が呼び出されたときに、* "ビューをレンダリングするために使われるクラス" *を返します。だから、それは時間を取っているビューレンダリングかもしれません。(すなわち、コントローラが 'ViewResult'を返した後の時点にビューレンダリングが延期されます) –

+0

ありがとうございます。 ExecuteResultについてのあなたの提案を反映するために上記の詳細を編集しました。だからonResultExecutedはそれを含んでいたでしょう。それでもコンストラクタのロギングは1500msを考慮していません –

答えて

0

私はweb.configファイルに次のように設定することで、500ミリ秒を保存するために管理:

<compilation debug="false" 

また、より多くのトレースステートメントを追加することによって、それは時間の大部分はApplication_BeginRequestとコントローラの間で発生することを強調していますコンストラクタですから、具体的な詳細を尋ねる新しい質問を作成しました。 MVCのアクションについては

Time taken between Application_BeginRequest and MVC Controller constructor is too long

2

ほとんどのブラウザの開発ツールの[ネットワーク]タブでは、特にウェブサーバがブラウザに接続を維持して必要なすべてのデータを転送できるようにしている場合、詳細なレポートは提供しません。ヒントは、プロダクション用に設計されたものです。そのためには、以下のあなたが見ているものです。

  • ページ自体と同じサーバーから同じサーバーから
  • JavaScriptファイルを
  • CSSスタイルシート(あなたは〜以下500ミリ秒を取るべきで測定)同じサーバから
  • 画像が

最近のブラウザではなく、オープンつの接続を維持し、一度に同じホスト(サーバー)からのすべてのリソースを要求します。これにより、接続に多くの隠されたコストが追加されます。 [ネットワーク]タブは、リソースのバンドルの個々のネットワーク時間を必ずしも細かくするわけではありません。

MVCページだけが返される(完全に変換された)ためにどれくらいの時間が費やされたかを確認するには、JMeterまたはcurlのようなツールを使用するとよいでしょう。

関連する問題