ASP.NET视图被编译的频率和何时进行



我尝试从MSDN和Google获得答案,但找不到。

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

  1. ASP.NET MVC视图何时被编译?
  2. 所有视图是否在应用程序启动或每个请求上都汇编?
  3. 我假设编译的视图将被使用,直到应用程序池重新启动为止。这是正确的吗?

ASP.NET MVC视图何时被编译?

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

所有视图都在应用程序启动或每个请求上都汇总?

否。不在应用程序启动时。不适合每个请求。如果请求返回查看V1 。V1已编译。然后,如果请求B 到达并且需要相同的查看V1 ,则刚刚返回视图而无需重新编译。

我假设Compiles视图在App Pool restart之前使用?

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

为什么不在发布应用程序之前预先编译您的观点?

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

<MvcBuildViews>false</MvcBuildViews>

<MvcBuildViews>true</MvcBuildViews>

更新:

AS nil pun 将其发现为我的答案的评论,以下链接破坏了 csproj file中的MvcBuildViews元素的神话。

因此,该文章的作者:

MVCBuildViews在这里将视图作为Web应用程序构建过程的一部分。它不会为二进制文件夹产生任何输出。观点是在发布过程中预先编译的,并且仅在预期不会修改视图的情况下才会进行预编译。可以配置如何进行预编译。这样,就可以将预编译视图的二进制组合到一个组装中。

最新更新