ASP.NET MVC - 应用程序预热 - 使用哪两种方法?

mar*_*c_s 7 c# sql-server asp.net-mvc application-warmup

为了加快ASP.NET MVC应用程序的反应时间,我们希望在应用程序安装后(或在应用程序池被回收之后)"预热"应用程序.应从SQL Server数据库中提取一些常用的查找数据,并将其存储到System.Runtime.Caching.MemoryCache.NET提供的全局对象中.

对于您的ASP.NET应用程序具有专用IIS的专用VM的情况,我首先将应用程序池设置为"始终运行" - 这是步骤#1.

鉴于这种情况,我看到有两种选择:

  1. 应用程序热身,如Scott Gu基于System.Web.Hosting.IProcessHostPreloadClient界面的博客文章所述.如果我理解正确,此代码在应用程序池启动时以及在第一个请求被接受到应用程序之前运行

  2. 使用该Application_Start事件global.asax.cs.如果我理解正确,当第一次启动应用程序时,此事件只被调用一次(这将在安装后自动发生,因为应用程序池设置为"始终运行" - 对吗?)

那么 - 鉴于此设置 - 这是"预热"您的应用程序的首选方式?这两种方法之间是否存在显着差异?当采用一种方法而不是另一种方法时,我需要注意什么?

感谢您提供任何输入,提示,警告或更详细解释的链接!

STW*_*STW 3

简而言之,使用IProcessHostPreloadClient——它将在启动时立即运行。

Application_Start有点用词不当,它实际上是在第一个请求时触发的。这意味着该站点可能会回收/重新启动并闲置,从而可能导致变暖。

如果您的站点使用 IIS 7 或更高版本,我不知道使用Application_Start.