在MVC3页面中包含RenderPartial的开销是多少

时间:2011-07-29 14:59:44

标签: asp.net-mvc asp.net-mvc-3 performance razor html.renderpartial

我正在尝试尽可能优化我的代码。我使用了很多这样的部分文件:

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

有人可以告诉我这是否存在性能开销。我知道Razor视图已编译完成。是否会出现页面显示时,会读取另一个磁盘来获取我使用的每个部分文件的数据。如果是这种情况,那么我的布局页面上的5个RenderPartials可以带来多少额外开销。

3 个答案:

答案 0 :(得分:2)

这里根本没有显着的性能影响,因为在将结果HTML流回浏览器之前,只需将部分内容放入asp.net Web服务器。这不是一个昂贵的磁盘读取,并不会出现比单个cshtml更慢。如果在许多视图中重用相同的局部视图,显然应该使用partials。如果仅在单个视图中使用,那么只需将其分成单独的部分即可将模型的各个部分分成不同的视图。

注意您也可以使用:

@Html.Partial("YourPartial")

而不是使用RenderPartial。这将在本地视图文件夹中查找,然后在共享中找不到。

答案 1 :(得分:0)

我认为使用RenderPartial约5次不会对设计页面产生很大的影响。如果将逻辑拉出(使页面更清晰,由多个视图使用等)是有意义的,那么就这样做。如果您发现性能问题很重要,那么您应该在那时查看它们,但不要过早地优化并创建一个糟糕的设计,因为您认为它可能会减慢速度。

答案 2 :(得分:0)

如果您希望更好地了解潜在的效果点击率,可能需要使用mvc-mini-profiler

请注意,虽然我不提倡预成熟优化。但是,使用分析工具可以让您更好地了解潜在的瓶颈,从而帮助您将来避免它们。