3

我想盡可能地優化我的代碼。我使用了很多像這樣的部分文件:在MVC3頁面中包含RenderPartial的開銷是什麼

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

有人可以告訴我,如果有這樣的性能開銷。我瞭解Razor視圖已編譯完成。當頁面顯示時,是否存在另一個磁盤讀取以獲取我使用的每個部分文件的數據。如果是這種情況,那麼在我的佈局頁面上,例如5個RenderPartials可能會帶來多少額外開銷。

回答

2

在這裏不會有太多可觀的性能問題,因爲這些部分只是在asp.net web服務器上被拉進來,然後將生成的HTML流式傳輸回瀏覽器。這不是一個昂貴的磁盤讀取操作,並且不會比單個cshtml顯示得慢。如果在許多視圖中重用相同的局部視圖,顯然應該使用局部視圖。如果僅用於單個視圖,那麼它只是將其分解爲單獨的部分以將模型的各個部分分成不同的視圖。

注意,你也可以只使用:

@Html.Partial("YourPartial") 

,而不是使用RenderPartial。這將看起來在本地視圖文件夾,然後在共享,如果沒有找到。

+0

是不是部分慢於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

請注意,雖然我不主張優先考慮。但是,使用分析工具可能會使您更好地瞭解潛在的瓶頸,從而幫助您在未來避免這些瓶頸。

相關問題