7

为了加快我们的 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。如果我理解正确,此事件仅在第一次启动应用程序时调用一次(安装后会自动发生,因为应用程序池设置为“始终运行”-对吗?)

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

感谢您提供任何输入、提示、警告或更多链接,以更详细地解释这一点!

4

1 回答 1

3

简短的回答,使用IProcessHostPreloadClient——它会在启动时立即运行。

Application_Start有点用词不当,它实际上是在第一个 request时触发的。这意味着该站点可能会回收/重新启动并处于闲置状态,可能会变暖。

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

于 2017-11-08T00:59:18.667 回答