49

我在 Visual Studio 中创建了一个全新的 MVC4 Web 应用程序,只为它添加了一个 Home 控制器和一个“Hello world”索引视图。然后我安装了 MiniProfiler NuGet 包并将必要的几行放入_Layout.cshtml. 这是我在发布模式下运行站点(托管在 IIS 中)时得到的结果:

MVC渲染图片

渲染时间因页面加载而异,但 130 毫秒是最快的。这对我来说似乎有点慢,因为我见过其他人在 30 毫秒或更快的时间内呈现页面。任何想法为什么使用全新的空 MVC4 项目渲染会这么慢?我的处理器是 Intel Core i5-2400,机器有 16GB RAM。

顺便说一句,这不是第一次加载页面;在得到这个 130 毫秒的结果之前,我重新加载了几次页面。

更新:
我遵循了 PSCoder 答案中的建议(删除了除 RazorViewEngine 之外的所有内容),并将渲染时间减半:

MVC渲染图2

这真的很好,但Render页面的主要动作我仍然得到大约 70 毫秒或更高的时间;理想情况下,我想减半或更好。

具体来说,我想问:

  • 这个渲染时间是不是看起来太慢了,还是对我的机器来说是平均的?
  • 有什么办法可以加快速度吗?
4

4 回答 4

80

这可能有助于改善与 ASP.NET MVC 相关的性能问题,您可以做的一项性能改进是清除所有视图引擎并添加您使用的引擎。比如说:- RazorViewEngine。MVC 默认注册了 2 个视图引擎WebformsRazor视图引擎,因此清除并添加单独使用的会提高查找性能。

您可以在global.asax Application_Start.

        ViewEngines.Engines.Clear();    
        ViewEngines.Engines.Add(new RazorViewEngine());      

为了完全利用视图查找缓存并因此再次获得性能提升,请在发布模式下编译代码,并确保您的web.config文件配置<compilation debug="false" />为视图查找缓存以启动。

于 2013-04-29T14:42:36.007 回答
59

添加到@PSL 的答案 - 我们只检查 `.CSHTML 文件

ViewEngines.Engines.Clear();

IViewEngine razorEngine = new RazorViewEngine() { FileExtensions = new string[] { "cshtml" } };

ViewEngines.Engines.Add(razorEngine);

此外,请确保您正在运行Release Mode- 这绝对是至关重要的,因为 ASP/Razor/MVC '在发布模式下应用了一些非常激进的缓存'

<compilation targetFramework="4.0" debug="false">在你的Web.Config文件中。

Sam Saffron/Stack Overflow 还研究了视图渲染性能:

http://samsaffron.com/archive/2011/08/16/Oh+view+where+are+thou+finding+views+in+ASPNET+MVC3+

于 2013-04-29T16:32:55.973 回答
0

视图是在使用前编译的——所以第一次它们很慢。

随后,如果.cshtml文件更改,它们将被重新编译 - 这意味着正在监视存储视图的目录。因此,硬盘速度将成为 MVC 视图的一个因素。

即使它们什么都不做,每个渲染引擎也会检查硬盘中的.cshtml文件.aspx。由于删除渲染引擎使其运行速度提高了一倍,我怀疑磁盘速度是问题所在:

  • 视图存储在网络驱动器上,或者
  • 硬盘很慢
于 2018-01-29T15:50:49.577 回答
0

预编译视图以加快首次渲染速度。

检查下面的博客..

https://blog.deltacode.be/2017/01/08/fix-slow-startup-of-asp-net-mvc-5-on-azure-app-services/

在此处输入图像描述

于 2019-12-12T06:40:44.760 回答