ASP.NET视图多长时间编译一次

ASP.NET视图多长时间编译一次,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我试图从MSDN和谷歌那里得到答案,但没有找到 我正在研究MVC应用程序的性能优化,这需要了解视图编译 asp.net MVC视图何时编译 是在应用程序启动时还是在每个请求时编译所有视图 我假设编译后的视图会一直使用到应用程序池重新启动。这是正确的吗 asp.net mvc视图何时编译 当第一个请求命中并执行返回视图的操作时,将编译视图 是否在应用程序启动时或每次请求时编译所有视图 不,不是在应用程序启动时。不是针对每个请求。如果请求A返回A查看V1。V1已编译。然后,如果请求B到达并且需要相同

我试图从MSDN和谷歌那里得到答案,但没有找到

我正在研究MVC应用程序的性能优化,这需要了解视图编译

  • asp.net MVC视图何时编译
  • 是在应用程序启动时还是在每个请求时编译所有视图
  • 我假设编译后的视图会一直使用到应用程序池重新启动。这是正确的吗
  • asp.net mvc视图何时编译

    当第一个请求命中并执行返回视图的操作时,将编译视图

    是否在应用程序启动时或每次请求时编译所有视图

    不,不是在应用程序启动时。不是针对每个请求。如果请求A返回A查看V1。V1已编译。然后,如果请求B到达并且需要相同的视图V1,则只返回视图,而不重新编译它

    我假设编译视图在应用程序池重新启动之前一直使用

    不,它们只编译一次,并且在应用程序池重新启动时不会重新编译

    为什么不在发布应用程序之前预编译视图?

    您可以在构建应用程序时预编译MVC视图。因此,您需要卸载MVC项目并修改以下XML元素

    <MvcBuildViews>false</MvcBuildViews>
    
    false
    
    为此:

    <MvcBuildViews>true</MvcBuildViews>
    
    true
    
    更新:

    由于Nil-Pun在我的答案评论中发现了它,以下内容摧毁了csproj文件中关于
    MvcBuildViews
    元素的神话

    因此,这篇文章的作者:

    MvcBuildViews将视图的构建作为web应用程序构建过程的一部分。它不会向binaries文件夹生成任何输出。视图是在发布过程中预编译的,只有在不希望修改视图的情况下才会进行预编译。可以配置如何进行预编译。通过这种方式,可以将预编译视图的二进制文件合并到一个程序集


    MvcBuildViews在激活预编译视图时不会产生结果请参见此处的详细信息: