【问题标题】:What is the maximum page rendering speed in MVC.NET, and how to improve it?MVC.NET 中的最大页面渲染速度是多少,如何提高?
【发布时间】:2011-04-05 20:41:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案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 毫秒对于解析路由和进行控制器实例化来说是一个巨大的开销。我知道这听起来有点像偏执狂,但我只是想深入了解这个讨厌的毫秒。
    • @Andy,是的,这听起来像是偏执狂,在编程中它被称为过早优化。
    • 谢谢,我很清楚接下来的步骤。一个好的心理医生会做.. :)
    • 我在我的应用程序中使用了 asp.net mvc4。我从数据库中获取了数千行。但加载页面需要超过 6 秒。请任何人帮助我提高我的应用程序的速度
    【解决方案2】:

    渲染页面所用的时间与每秒请求数不同,这不是直接相关的值(类似于游戏开发中的 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 临时文件移动到 RAM 驱动器来加快速度,但无论如何我都无法在 0.8 毫秒以下。

    【讨论】:

      猜你喜欢
      • 2012-06-06
      • 2011-08-12
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      相关资源
      最近更新 更多