3

できるだけコードを最適化しようとしています。MVC3ページにRenderPartialを含めるとオーバーヘッドが発生する

@if (Model.PageMeta.Sidebar == PageMetaSidebar.Small) { Html.RenderPartial("_SmallSidebar"); } 
.. 
.. 
.. 

これにパフォーマンス上のオーバーヘッドがあるかどうか教えてもらえますか?私は、かみそりの意見がまとめられていることを理解しています。ページが表示されているときに、私が使用している部分ファイルのそれぞれのデータを取得するために別のディスクが読み込まれます。そうであれば、私のレイアウトページのRenderPartialsを例にすれば、どれくらいのオーバーヘッドを期待できますか?

答えて

2

結果のHTMLをブラウザにストリーミングする前に、部分的にasp.net Webサーバーに取り込まれるだけで、ここでは目に見えるパフォーマンスが低下することはありません。これは高価なディスクの読み込みではなく、単一のcshtmlよりも遅く表示されません。明らかに、同じ部分図が多くのビューで再利用される場合は、部分図を使用する必要があります。単一のビューでのみ使用されている場合は、モデルの一部を別々のビューに分割するために、それを別々の部分に分割することが明確です。

@Html.Partial("YourPartial") 

ではなくRenderPartialを使用して:

はあなたにもちょうど使用することができます。これは、ローカルビューフォルダ内を探して、見つからない場合は共有フォルダに表示されます。

+0

文字列を返すため、PartialはRenderPartialより遅いですか?それとも、パフォーマンスのヒットはあまりありませんか? – Alex

+0

あなたはRenderPartialがパフォーマンス上明らかに優れていると思います。詳細については、http://stackoverflow.com/questions/5248183/html-partial-vs-html-renderpartial-html-action-vs-html-renderactionをご覧ください。 –

0

私はRenderPartialを5回使っても、あなたのページをうまく設計できないほどのインパクトがあるとは思いません。ロジックを外に出して(ページをきれいにしたり、複数のビューで使用するなど)、それを行うのが理にかなっている場合は、それを実行します。重大なパフォーマンス上の問題がある場合は、その時点で見ておくべきですが、パフォーマンスが低下する可能性があると考えて、早期に最適化して設計を作成しないでください。

0

潜在的なパフォーマンスヒットをよりよく理解したい場合は、mvc-mini-profilerで遊びたいかもしれません。

私は成熟前の最適化を主張していませんが、ご注意ください。ただし、プロファイリングツールを使用すると、潜在的なボトルネックをより深く理解できるため、将来的にボトルネックを回避するのに役立ちます。

関連する問題