MVC.NET中的最大页面渲染速度是多少,以及如何改进它?

时间:2010-12-18 10:44:22

标签: asp.net-mvc-3

我正在测量页面渲染速度,在OnBeginRequest上触发StopWatch,并在OnResultExecuted处停止它,从而测量整个页面渲染周期。 我在渲染过程中得到以下时间戳:

0 ms - OnBeginRequest
+1.1毫秒 - OnActionExecuting
+2 ms - OnActionExecuted
+3 ms - OnResultExecuted

后三个时间戳当然是特定于应用程序的,但我想知道在应用程序收到请求和动作方法得到控制之间的1.1毫秒内会发生什么?

如何减少这段时间? 使用MVC.NET(每秒页数)获得的最大渲染速度是多少?你是怎么做到的?

2 个答案:

答案 0 :(得分:1)

发生了很多事情:解析路由,定位控制器并实例化,调用操作方法。确保您在发布模式下运行:

<compilation debug="false" />

以便您的测量结果更加真实。实际上,接收请求和调用控制器操作之间的时间永远不会成为瓶颈。在控制器操作中花费的时间应该集中在减少上。这是您的应用程序可能获得真正性能提升的地方。有不同的技术可以提高性能,而流行的是使用缓存。

根据Gu

  

今天的ASP.NET MVC 3 RC2构建   包含许多错误修复和   性能优化。我们最新的   性能测试表明   ASP.NET MVC 3现在速度比   ASP.NET MVC 2,即现有的   ASP.NET MVC应用程序将   体验轻微的表现   更新为使用时更新   ASP.NET MVC 3。

答案 1 :(得分:1)

呈现页面所花费的时间与每秒请求数不同,不是直接相关的值(类似于游戏开发中的FPS和每帧时间see here)。特别是在多线程环境中。

就我的机器而言,一个空的MVC应用程序在0.8-1.1毫秒内呈现默认控制器和视图。当然路线收集几乎是空的,因此大概节省了很多时间。您可以进行一些优化,您可以轻松地在网上找到它们,其中一个主要是:清除您的视图引擎并添加您正在使用的视图引擎,这将节省每次硬盘的往返请求。

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

至于真正的网站,我能够获得一个真实世界的MVC应用程序,每秒渲染超过2000个请求。您可能想要尝试的一件事是将您的Temp ASP.Net文件和您的网站文件夹放在RAM驱动器上,因为MVC和IIS在每次请求时都会点击物理组件文件,但实际上增益太小而不明显或者值得任何人的时间。

如果你看一下source code here页面的生成时间是1毫秒(这不完全正确,因为它位于视图的中间,但是非常接近)。该服务器在RAM驱动器上运行。你可以通过将ASP.Net Temp Files移动到RAM驱动器来加快速度,但无论如何我都无法在0.8毫秒内获得它。