我们希望预热托管在IIS7.5服务器上的ASP.NET MVC应用程序。曾经在http://forums.iis.net/t/1176740.aspx提供的预热模块已经被移除。
应用程序应该在每次IIS或ASP.NET工作进程出于任何原因重新启动时预热。在预热期间,IIS应返回一些HTTP状态代码,指示其预热状态或无法为任何客户端提供服务。
创建一个通过HttpRequests浏览站点中必要页面的可执行文件是不是一个好主意?可执行文件可以从IProcessHostPreloadClient实现中触发。是否可以将IIS配置为只接受来自本地主机的请求,一旦可执行文件完成,它就可以切换到所有客户端-但该切换不应触发IIS重新启动(显然)。
是否可以使用Visual Studio2010- Web性能测试来预热应用程序,而不是创建手动可执行文件?还有别的选择吗?
PS:应用程序使用表单身份验证和会话-因此维护状态cookie和其他cookie很重要。
更新1-我们在应用程序中使用.NET Framework4.0和实体框架(首先是数据库)。对EF查询的第一次命中速度很慢。热身背后的原因是为了让这些第一次命中的方式。我们已经在大多数地方使用了编译的查询,并且我们已经为EF实现了预编译的视图。模型和应用程序的规模非常大和复杂。预热需要遍历多个页面,以确保在任何最终用户访问应用程序之前,至少执行一次编译和非编译的EF查询。
发布于 2012-09-21 04:52:54
微软已经发布了一个模块,它完全可以做你所要求的事情。Application Initialization Module for IIS 7.5通过在第一个请求到达之前加载网站应用程序来提高网站的响应性。
您可以指定一系列Urls,IIS将在接受来自真实用户的请求之前预加载这些Urls。我不认为你可以得到一个真正的用户登录体验,但也许你可以建立一个模拟的页面,不需要登录,满足你所要求的相同的预热?
我认为最引人注目的特性是,这个模块还支持重叠的进程回收。following tutorial from IIS 8.0包括一种关于如何启用重叠进程回收的分步方法。
当IIS检测到正在回收活动的工作进程时,IIS不会将活动通信切换到新的回收的工作进程,直到新的工作进程完成在新进程中运行所有应用程序初始化Urls。这可以确保浏览您网站的客户在应用程序处于活动和运行状态时不会看到应用程序初始化页面。
此IIS应用程序初始化模块内置于IIS8.0中,但它是available for download for IIS 7.5。
发布于 2011-09-12 20:04:19
您可以查看IIS7.5和ASP.NET 4.0中内置的自动启动功能的following post。
https://stackoverflow.com/questions/7387123
复制相似问题