1
6
根据微软工程师的说法,IIS6不可能做到这一点。然而,他们在IIS7.5和ASP.NET 4.0中添加了一个新功能,它为我在这里所要查找的内容提供了一个很好的规定。它被称为“预加载提供者”。下面是一个示例片段(非常酷!). http://forums.iis.net/p/1158476/1907392.aspx 由于单个应用程序池可以包含多个应用程序,因此您可以使用applicationhost.config文件中的以下配置指定要自动启动的单个应用程序:
在冷启动IIS 7.5服务器或回收单个应用程序池时,IIS 7.5使用applicationhost.config文件中的信息来确定需要自动启动哪些Web应用程序。对于每个标记为自动启动的应用程序,iis7.5向ASP.NET 4.0发送一个请求,以在应用程序暂时不接受HTTP请求的状态下启动应用程序。当它处于这种状态时,ASP.NET实例化由preloadProvider属性定义的类型(如前一个示例所示),并调用它的公共入口点。 通过实现iprocesshostpreloadclient接口,可以创建具有必要入口点的托管自动启动类型,如下例所示:
在预加载方法中运行初始化代码并返回该方法之后,ASP.NET应用程序就可以处理请求了。 通过向IIS7.5和ASP.NET 4.0中添加自动启动,您现在有了一种定义良好的方法,可以在处理第一个HTTP请求之前执行昂贵的应用程序初始化。例如,您可以使用新的自动启动功能来初始化应用程序,然后向负载均衡器发出信号,表明应用程序已初始化并准备好接受HTTP流量。 |
2
2
也许可以使用Web监视工具定期访问Web应用程序。除了能够在网站关闭或其他情况下不按预期运行时向您发送电子邮件/页面之外,这些工具还可以根据配置工具访问网站的页面和频率,使您的Web应用程序保持“热”状态,从而产生有益的副作用。 理论上,一旦所有的请求都初始化了,IIS将以循环方式在花园中分配传入的请求。最好的办法是在你的应用程序中用各种各样的URL配置监控工具,这些URL并不等于你花园中进程数的正倍数,否则同一个花园总是会被相同的URL子集击中,假设没有其他站点活动。不管怎样,如果配置正确,几轮之后你的花园应该都很热。 |
3
0
微软已经发布了一个模块,它完全按照你的要求执行。这个 Application Initialization Module for IIS 7.5 将通过确保花园中的每个服务器都有热缓存来解决您的问题,并在收到真正用户的第一个页面点击时做出响应。 我认为最引人注目的特点是,这个模块还支持重叠的流程回收。这意味着您可以回收、部署应用程序的新版本并重新启动各个服务器,而不会有任何用户被困在具有冷缓存的低速服务器上。这个 following tutorial from IIS 8.0 包括一个循序渐进的方法如何启用重叠的过程回收。 有关更多详细信息,请阅读我对类似问题的回答: How to warm up an ASP.NET MVC application on IIS 7.5? |
tincho87 · 避免Javascript/Css缓存 6 年前 |
Zac · 如何强制客户端重新下载我的网站? 6 年前 |
Kumar · bitbake清理使用只读NFS SSTATE缓存失败 6 年前 |
Chris Williams · 休眠/JPA缓存查找值 6 年前 |
Nymeria · 仅绑定到当前事务的Spring缓存 6 年前 |