2017-09-27 64 views
5

为了加快ASP.NET MVC应用程序的响应时间,我们希望在应用程序安装完成后(或在应用程序池被回收后)“预热”应用程序。应该从SQL Server数据库中提取一些经常使用的查找数据,并将其存储到.NET提供的全局对象System.Runtime.Caching.MemoryCache中。ASP.NET MVC - 应用程序预热 - 两种使用方法中的哪一种?

对于您有一个专用的虚拟机和专用的IIS为您的ASP.NET应用程序的情况下,我首先将应用程序池设置为“始终运行” - 这是第1步。

鉴于这种情况,有两种选择我看到:基于System.Web.Hosting.IProcessHostPreloadClient接口

  1. 应用热身描述in this blog post by Scott Gu。如果我理解正确的话,这个代码运行时,应用程序池已启动,并且第一请求被接受为应用程序之前

  2. global.asax.cs使用Application_Start事件。如果我理解正确,这个事件被称为一次,当应用程序第一次启动(安装后会自动发生,因为应用程序池被设置为“Always Running” - 对吧?)

所以 - 给定这个设置 - 这是“预热”你的应用程序的首选方式?这两种方法有什么显着差异?在采取一种方法时,我需要注意什么?

感谢您的任何输入,提示,警告或进一步的链接,更详细地解释这一点!

+0

您的应用程序是否预编译?如果合并/未合并。我相信这会影响到你的“热身”时间。在我看来,始终运行的开销是整个应用程序都坐在内存中,永远不会按需要释放? – DaniDev

回答

2

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

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

如果您的网站在IIS 7或以上,我不知道使用Application_Start的理由。

+0

下面是一个相关/相关问题:https://stackoverflow.com/questions/10623303/run-application-start-immediately-when-application-pool-restarts-in-iis – STW

相关问题