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

如果您想更好地了解潜在的性能影响,您可能需要使用mvc-mini-profiler

请注意,尽管我不提倡过早的优化。但是,使用分析工具可能会让您更好地了解潜在的瓶颈,从而帮助您在未来避免它们。

于 2011-07-30T06:06:15.520 回答
0

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

于 2011-07-29T15:04:32.187 回答