3

コードを可能な限り最適化しようとしています。私はこのような部分的なファイルをたくさん使用しています:

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

これでパフォーマンスのオーバーヘッドがあるかどうか誰かに教えてもらえますか?Razorビューがコンパイルされていることを理解しています。ページが表示されているときに、使用する各部分ファイルのデータを取得するために別のディスクが読み取られる場合がありますか。その場合、たとえばレイアウトページの5つのRenderPartialsを使用すると、どのくらいの追加オーバーヘッドが予想されますか。

4

3 に答える 3

2

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

次のものだけを使用することもできます。

@Html.Partial("YourPartial")

を使用するのではなくRenderPartial。これはローカルビューフォルダを検索し、見つからない場合は共有を検索します。

于 2011-07-29T15:03:44.547 に答える
0

RenderPartialを5回まで使用しても、ページのデザインが不十分になるほど大きな影響はないと思います。ロジックを引き出すことが理にかなっている場合(ページをすっきりさせたり、複数のビューで使用したりするなど)、それを実行します。重大なパフォーマンスの問題に気付いた場合は、その時点でそれらを確認する必要がありますが、何かが遅くなる可能性があると考えるため、時期尚早に最適化して貧弱な設計を作成しないでください。

于 2011-07-29T15:04:32.187 に答える
0

潜在的なパフォーマンスヒットをよりよく理解したい場合は、mvc-mini-profilerを試してみることをお勧めします。

ただし、私は時期尚早の最適化を提唱していないことに注意してください。ただし、プロファイリングツールを使用すると、潜在的なボトルネックをよりよく理解できるため、将来的にボトルネックを回避するのに役立ちます。

于 2011-07-30T06:06:15.520 に答える