2013-04-29 210 views
45

我在Visual Studio中创建了一个全新的MVC4 Web应用程序,除此之外,它并没有为它添加一个Home控制器和一个“Hello world”索引视图。然后,我安装了MiniProfiler NuGet软件包,并在_Layout.cshtml中放置了必要的几行代码。这是我所得到的,当我跑在释放模式的网站(在IIS托管):ASP.NET MVC渲染看起来很慢

MVC rendering picture

渲染时间页面加载不同,但130MS是一样快,因为它得到。这对我来说似乎有点慢,因为我看到其他人以30毫秒或更快的速度渲染页面。任何想法为什么渲染将会因为一个全新的空MVC4项目而变得缓慢?我的处理器是Intel Core i5-2400,机器有16GB RAM。

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

UPDATE:
我跟着从PSCoder答案(删除所有,但RazorViewEngine)的建议,并减半演出时间:

MVC rendering picture 2

这是非常好的,但我对于页面的主要动作Render仍然会获得大约70ms或更高;理想情况下,我希望减半或更好。

具体来说,我想问:

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

唯一你提到的未知数据是分析器工具本身。也许可以消除这种情况,并使用控制台应用程序来创建“HttpClient”或“WebClient”或任何你想要的,通常下载页面,然后看看它实际需要多长时间。在一个循环中运行几十次或几百次,然后手动记录时间。 – 2013-04-29 14:38:54

+0

@Joe除了我已经看到其他人使用MiniProfiler和获得30ms渲染的截图。 – Jez 2013-04-29 14:40:03

+1

你可以做出更好的截图吗?这是很难阅读,并充满了不必要的空白。 – Amy 2013-04-29 14:40:50

回答

73

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

您可以在global.asaxApplication_Start中加入此项。

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

为了完全利用视图查找缓存并再次性能增益在释放模式编译代码,并确保您的web.config文件配置了<compilation debug="false" />的视图查找缓存中踢。

+2

这有助于提高性能,但为了增加这个答案,在我的网站的腿周围放置了一个球和链是'System.Web.Optimization' beta 2,它确实减慢了一切,请参见[这里](http:// stackoverflow。 COM /问题/ 16302406 /设置,调试假实际上可引起-远慢渲染)。升级该软件包后,我的网站要快得多。 – Jez 2013-05-01 12:32:52

+1

虽然这真的很奇怪,但很好,你发现问题所在,并能够解决性能问题...... :) – PSL 2013-05-01 14:08:20

+1

使用[异步部分视图]怎么样(http://blog.michaelckennedy.net/2012/ 11/13/improve-perceived-performance-of-asp-net-mvc-websites-with-async-partialviews /)或[Creating Asynchronous Actions](http://www.codeguru.com/csharp/.net/net_asp /mvc/creating-asynchronous-actions-in-asp.net-mvc.htm)在mvc中? – stom 2015-05-05 16:12:34

55

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

ViewEngines.Engines.Clear(); 

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

ViewEngines.Engines.Add(razorEngine); 

此外,请确保您在Release Mode运行 - 这绝对是至关重要的,因为ASP /剃刀/ MVC“适用于一些非常积极的缓存'当处于发布模式时

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

萨姆藏红花/堆栈溢出看着视图渲染性能也:

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

+1

+1好点... – PSL 2013-05-01 21:54:32

0

查看使用之前被编译 - 所以在第一个场合,他们是缓慢的。

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

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

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