MVC FindView在应用程序启动时变慢

时间:2012-09-25 13:23:16

标签: c# .net asp.net-mvc-3 performance asp.net-mvc-views

无论如何都要运行应用程序并预​​先填充MVC ViewCache以消除在Web应用程序预热期间有时会发生的2秒时间损失?

当我们的应用程序启动时,我们有时会遇到2秒的性能延迟时间......一旦启动它只有毫秒。

如果它有帮助,我肯定在发布模式下运行,并且只使用Razor引擎:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        Bootstrapper.Initialise(); //IOC Setup
        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        //Only use the RazorEngine. - http://blogs.msdn.com/b/marcinon/archive/2011/08/16/optimizing-mvc-view-lookup-performance.aspx
        ViewEngines.Engines.Clear();

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

        ViewEngines.Engines.Add(razorEngine);
    }

欢迎任何建议。

TA

2 个答案:

答案 0 :(得分:2)

您可以在IIS 7.5中使用新的ASP.NET AutoStart feature。还要确保在部署应用程序时它正在发布模式(debug="false")中运行。

答案 1 :(得分:1)

Dave Ward在A harsh reminder about the importance of debug=”false”的web.config中讨论了与debug =“false”相关的这个问题和其他问题。

  

在调试模式下,视图分辨率已经过优化,易于开发。   MVC每​​次都会遍历视图解析过程   您的代码呈现命名视图。这显然很有用,因为你很明显   希望环境立即响应您的更改   你在网站上工作。

     

然而,在发布模式下,MVC的视图分辨率已经过优化   性能。在发布中成功解析视图位置时   模式,MVC缓存该查找的结果,不需要执行   当遇到对该命名的引用时,另一个文件系统搜索   再看一遍。