ASP.NET View的编译频率和时间

时间:2017-05-01 04:52:05

标签: asp.net asp.net-mvc

我试图从MSDN和谷歌获得答案,但找不到它。

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

  1. 什么时候编译asp.net MVC视图?
  2. 是否在应用程序启动时或每次请求时编译所有视图?
  3. 我假设在应用程序池重启之前会使用已编译的视图。这是对的吗?

1 个答案:

答案 0 :(得分:2)

  

什么时候编译asp.net mvc视图?

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

  

所有视图都会在应用程序启动时或每次请求时编译?

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

  

我假设在应用程序池重启之前会使用编译视图吗?

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

为什么不在发布申请之前预先编辑您的观点?

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

<MvcBuildViews>false</MvcBuildViews>

到此:

<MvcBuildViews>true</MvcBuildViews>

<强>更新

正如 Nil Pun 在我的回答的评论中发现它,以下link摧毁了关于 csproj 文件中MvcBuildViews元素的神话。< / p>

那篇文章的作者:

  

MvcBuildViews用于构建视图,作为Web应用程序构建过程的一部分。它不会生成任何输出到二进制文件夹。在发布过程中预编译视图,并且只有在不希望修改视图时才会进行预编译。可以配置预编译的完成方式。这样就可以将预编译视图的二进制文件合并到一个程序集中。