我尝试从MSDN和Google获得答案,但找不到。
我正在研究MVC应用程序的性能优化,这需要了解视图汇编。
- ASP.NET MVC视图何时被编译?
- 所有视图是否在应用程序启动或每个请求上都汇编?
- 我假设编译的视图将被使用,直到应用程序池重新启动为止。这是正确的吗?
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应用程序构建过程的一部分。它不会为二进制文件夹产生任何输出。观点是在发布过程中预先编译的,并且仅在预期不会修改视图的情况下才会进行预编译。可以配置如何进行预编译。这样,就可以将预编译视图的二进制组合到一个组装中。