Asp.net网站的第一次启动很慢

Asp.net网站的第一次启动很慢

Asp.net website first start is very slow

第一次将网站加载到生产Web服务器中时,它的启动速度非常慢,随后的页面加载速度非常快(包括主页)。

我对该站点进行了预编译,但是没有任何变化。

我在应用程序启动时没有任何代码。
我没有缓存的项目。

有任何想法吗? 我怎么知道发生了什么事?


只是您的应用程序域正在加载并将任何二进制文件加载到内存中。另外,它正在初始化静态变量,因此,如果您有一个静态变量可以从数据库中加载大量数据,则可能需要一点时间。


发布网站时,您是否选择在发布网站的设置中使网站"可更新"?如果我没记错的话,也需要编译aspx / ascx文件,如果它们是"可更新的",那么第一次启动将导致重新编译这些资源。


确保在"发行版"而不是"调试"中发布应用程序。我注意到这大大减少了加载时间。 web.config文件将被更新。


使用http://www.iis.net/expand/ApplicationWarmUp来预热您的应用
这是针对IIS 7.5的-因此,如果您在Server R2上运行,它将可以使用。


尝试清除您的事件日志?


您是否已打开web.config中的跟踪功能?


@Mickey: No, it is turned off. Do I need to turn it on to find out?

跟踪日志将向您显示每个操作需要多长时间。它可以帮助您找到花了这么长时间的东西。

这是一个可以帮助您进行设置的链接。


最初的速度缓慢有几件事:

  • 正在设置appDomain
  • ASP.NET正在解析和编译ASPX页面。
  • 全局上下文正在初始化。

这是ASP.NET的正常行为。


当您说"预编译"站点时,您是使用aspnet_compiler实用程序进行预编译,还是仅使用Visual Studio中的"构建站点"选项?

如果您不执行前者,建议您试一下。与Web部署项目结合使用,您应该可以更轻松地为每个版本部署站点。


在达伦(Darren)快点头。这是DLL更新后.NET应用程序的典型行为。初始加载后,所有东西都应顺着拉链滑动。


这听起来很像是后台编译。但是,如果您要进行预编译,那应该不是问题。

我首先要看的是您的ORM(如果有)。尤其是NHibernate,在启动时会在后台运行多个编译器,从而将数据层中的每个类转换为自己的内存中程序集,因此严重地影响了启动。


推荐阅读