C# ASP.NET MVC呈现速度似乎很慢
我在VisualStudio中创建了一个全新的MVC4 web应用程序,除了为它添加一个主控制器和一个“Hello world”索引视图之外,我什么也没做。然后,我安装了MiniProfiler NuGet包,并在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项目的
\u Layout.cshtml
中添加了必要的几行代码。这是我在发布模式下运行站点(托管在IIS中)时得到的结果:
渲染时间随页面负载的不同而变化,但130ms的速度差不多。这对我来说似乎有点慢,因为我见过其他人在30毫秒或更快的时间内渲染页面。你知道为什么一个全新的空MVC4项目的渲染会这么慢吗?我的处理器是Intel Core i5-2400,机器有16GB RAM
顺便说一下,这不是第一次加载页面;在得到这个130毫秒的结果之前,我重新加载了页面几次
更新:我按照PSCoder的回答中的建议(除去RazorViewEngine之外的所有组件),它将渲染时间减少了一半: 这真的很好,但是对于页面的主
Render
操作,我仍然可以得到大约70毫秒或更高的速度;理想情况下,我想减半或更好
具体来说,我想问:
- 这个渲染时间看起来太慢了,还是对我的机器来说是平均的
- 有什么办法可以加快速度吗
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?