ASP.NET MVC渲染似乎很慢

时间:2013-04-29 14:35:26

标签: c# asp.net-mvc performance asp.net-mvc-4

我在Visual Studio中创建了一个全新的MVC4 Web应用程序,除了为它添加一个Home控制器和一个“Hello world”索引视图之外,它没有做任何事情。然后,我安装了MiniProfiler NuGet包,并在_Layout.cshtml中添加了必要的几行。这是我在发布模式下运行网站时获得的(在IIS中托管):

MVC rendering picture

渲染时间因页面加载而异,但130ms的速度与它的速度差不多。这对我来说似乎有点慢,因为我已经看到其他人在30ms或更快时间内呈现页面。有关为什么渲染会因为一个全新的空MVC4项目而变慢的想法?我的处理器是Intel Core i5-2400,机器有16GB RAM。

顺便说一下,第一次加载页面时;在获得130ms的结果之前,我重新加载了几次页面。

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

MVC rendering picture 2

这非常好,但对于页面的主Render操作,我仍然可以获得大约70毫秒或更高的时间;理想情况下,我想将其减半或更好。

具体来说,我想问:

  • 这个渲染时间是否过于缓慢或者我的机器是否平均?
  • 有什么办法可以加快速度吗?

4 个答案:

答案 0 :(得分:76)

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

您可以在global.asax Application_Start中添加此内容。

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

为了完全利用视图查找缓存,从而再次获得性能增益,在发布模式下编译代码,并确保web.config文件配置了<compilation debug="false" />,以便查看查找缓存以启动。

答案 1 :(得分:56)

添加到@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+

答案 2 :(得分:0)

视图在使用前编译 - 所以在第一次使用时它们很慢。

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

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

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

答案 3 :(得分:0)

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

查看以下博客。

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

enter image description here