Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 什么';在MVC3页面中包含RenderPartial的开销是多少_Asp.net Mvc_Asp.net Mvc 3_Performance_Razor_Html.renderpartial - Fatal编程技术网

Asp.net mvc 什么';在MVC3页面中包含RenderPartial的开销是多少

Asp.net mvc 什么';在MVC3页面中包含RenderPartial的开销是多少,asp.net-mvc,asp.net-mvc-3,performance,razor,html.renderpartial,Asp.net Mvc,Asp.net Mvc 3,Performance,Razor,Html.renderpartial,我正在尽可能地优化我的代码。我使用了很多这样的部分文件: @if (Model.PageMeta.Sidebar == PageMetaSidebar.Small) { Html.RenderPartial("_SmallSidebar"); } .. .. .. 有人能告诉我这是否会带来性能开销吗。我知道Razor视图是经过编译的。当显示页面时,是否有另一个磁盘读取,以获取我使用的每个部分文件的数据。如果是这样的话,那么对于我的布局页面上的5个RenderParties,我可以期望有多少额外

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

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

有人能告诉我这是否会带来性能开销吗。我知道Razor视图是经过编译的。当显示页面时,是否有另一个磁盘读取,以获取我使用的每个部分文件的数据。如果是这样的话,那么对于我的布局页面上的5个RenderParties,我可以期望有多少额外的开销。

这里根本不会有明显的性能影响,因为在将生成的HTML流回到浏览器之前,这些部分只是拉入asp.net web服务器。这不是一个昂贵的磁盘读取操作,也不会比单个cshtml的速度慢。显然,如果在许多视图中重复使用相同的局部视图,则应使用局部视图。如果只在一个视图中使用,那么只需清楚地将其拆分为单独的部分,将模型的各个部分拆分为不同的视图

注意:您也可以只使用:

@Html.Partial("YourPartial")

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

我认为使用RenderPartial~5次不会对页面设计造成太大影响。如果拉出逻辑(使页面更干净,被多个视图使用,等等)是有意义的,那么就这样做。如果您注意到重大的性能问题,那么您应该在那时查看这些问题,但不要过早地优化和创建一个糟糕的设计,因为您认为这可能会减慢速度。

如果您想更好地了解潜在的性能问题,您可能需要尝试一下


但请注意,我并不提倡提前优化。但是,使用分析工具可能会让您更好地了解潜在的瓶颈,从而帮助您在将来避免这些瓶颈。

是否部分比RenderPartial慢,因为它返回字符串?或者这对性能影响不大?你是对的,RenderPartial的性能明显更好。有关详细信息,请参阅。