Fork me on GitHub

IIS 7.5 Application Warm-Up Module

有些web应用在可以处理用户访问之前,需要装载很多的数据,或做一些花费很大的初始化处理。今天使用 ASP.NET 的开发人员经常使用应用的Global.asax  文件中的 “Application_Start”事件处理函数来做这些工作(该事件是在第一个请求执行时触发的)。他们要么设计定制脚本,周期性地向应用发假的请求,来“唤醒它(wake it up)”,从而在客户访问之前执行这个代码,或者就让那不幸的第一个访问者等着这个逻辑执行完才处理其请求(这可以给这些用户造成很长的耽搁)。ASP.NET 4中有一个叫“自动启动(auto-start)”的新特性,可以较好地解决这个场景, 可以在IIS 7.5(随Windows 7和Windows Server 2008 R2发布)上运行 ASP.NET 4时使用。这个自动启动特性提供了一个可控制的方式来启动一个应用工作进程,初始化ASP.NET 应用,然后接受HTTP请求。

另外微软设计了一个模块,让应用程序可以有充足的时间暖机,暖机完成后才会开始接收第一个 HTTP 要求,这个模块即是 Application Warm-up 模块。Application Warm-up 模块是负责在应用程序处理第一个要求前,先给予其初始化的时间,让它可以在服务第一个要求前先做完初始化的工作后,再开放处理第一个要求。Application Warm-up 具有下列的功能:

  1. 通过工作进程预载(pre-load worker process)来减少响应所需要的时间,尤其是第一个响应。
  2. 通过工作进程预加载以增加在应用程序集区回收时的强固性。
  3. 自定义应用程序预加载功能。

目前 Application Warm-up 模块仍然在 Beta 的测试阶段,可利用 Web Platform Installer 2.0 来安装,但目前只支持 IIS 7.5(即 Windows 7 与 Windows Server 2008 R2 内建的版本),未来可能会扩大支持到 IIS 7.0。

安装后再每个网站上都会看到下面Application Warm-up图标(Application Warm-up 模块图标只会在网站节点以及应用程序节点出现,服务器节点以及一般目录节点是不会出现的):

image

接下来,我们启动 Application Warm-up 模块,到设置 Application Warm-up 的界面,并将两个复选框都打勾:

image

接着,在右方的指令列中,按 Add Request,并且输入 /Default.aspx,这代表当 Application Warm-up 会针对这个网页做预加载的工作,如同应用程序预载一般(如果是加入预设网页的话,只要”/”就可以了)。

image

 

WCF and AppFabric Auto-Start:http://blogs.msdn.com/b/endpoint/archive/2010/12/09/wcf-and-appfabric-autostart.aspx

Application Warm-Uphttp://www.iis.net/download/ApplicationWarmUp

台湾微软 IIS网站 http://www.microsoft.com/taiwan/technet/iis/

posted @ 2010-12-21 22:44  张善友  阅读(4057)  评论(0编辑  收藏  举报