C# ASP.NET MVC呈现速度似乎很慢

C# ASP.NET MVC呈现速度似乎很慢,c#,asp.net-mvc,performance,asp.net-mvc-4,C#,Asp.net Mvc,Performance,Asp.net Mvc 4,我在VisualStudio中创建了一个全新的MVC4 web应用程序,除了为它添加一个主控制器和一个“Hello world”索引视图之外,我什么也没做。然后,我安装了MiniProfiler NuGet包,并在\u Layout.cshtml中添加了必要的几行代码。这是我在发布模式下运行站点(托管在IIS中)时得到的结果: 渲染时间随页面负载的不同而变化,但130ms的速度差不多。这对我来说似乎有点慢,因为我见过其他人在30毫秒或更快的时间内渲染页面。你知道为什么一个全新的空MVC4项目的

我在VisualStudio中创建了一个全新的MVC4 web应用程序,除了为它添加一个主控制器和一个“Hello world”索引视图之外,我什么也没做。然后,我安装了MiniProfiler NuGet包,并在
\u Layout.cshtml
中添加了必要的几行代码。这是我在发布模式下运行站点(托管在IIS中)时得到的结果:

渲染时间随页面负载的不同而变化,但130ms的速度差不多。这对我来说似乎有点慢,因为我见过其他人在30毫秒或更快的时间内渲染页面。你知道为什么一个全新的空MVC4项目的渲染会这么慢吗?我的处理器是Intel Core i5-2400,机器有16GB RAM

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

更新:
我按照PSCoder的回答中的建议(除去RazorViewEngine之外的所有组件),它将渲染时间减少了一半:

这真的很好,但是对于页面的主
Render
操作,我仍然可以得到大约70毫秒或更高的速度;理想情况下,我想减半或更好

具体来说,我想问:

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

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

您可以将其添加到
global.asax
应用程序\u Start

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

为了完全利用视图查找缓存,从而再次提高性能,请在发布模式下编译代码,并确保您的
web.config
文件配置了
以启动视图查找缓存

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

ViewEngines.Engines.Clear();

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

ViewEngines.Engines.Add(razorEngine);
另外,请确保您正在
发布模式下运行
——这是绝对关键的,因为ASP/Razor/MVC在发布模式下应用了一些非常积极的缓存

Web.Config
文件中

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


视图是在使用前编译的,因此在第一次使用时速度很慢

随后,如果
.cshtml
文件发生更改,它们将重新编译,这意味着存储视图的目录将受到监视。因此,硬盘速度将是MVC视图的一个因素

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

  • 视图存储在网络驱动器上,或
  • 硬盘速度很慢

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

查看下面的博客


您提到的唯一未知的是探查器工具本身。也许可以消除这种情况,使用控制台应用程序制作一个
HttpClient
WebClient
或任何你想要的东西,正常下载页面,然后看看实际需要多长时间。在循环中运行几十次或几百次,然后手动记录这些时间。@Joe,除了我见过其他使用MiniProfiler并获得30ms渲染的屏幕截图外。你能做一个更好的屏幕截图吗?它很难阅读,而且充满了不必要的空白。@Amy好的,我改进了它。你用什么来运行它?开发服务器?IIS快车?IIS 6?IIS7?7.5? 8?这有助于提高性能,但为了补充这一问题,我的网站腿上的一个球和链条是
System.Web.Optimization
beta 2,它确实减慢了一切,请参阅。升级该软件包后,我的网站速度快多了。虽然这真的很奇怪,但很好,你找到了问题所在,并且能够解决性能问题…:)在mvc中使用或如何?@PSL这是否仍然适用于mvc 5?