我们想要对一个托管在IIS 7.5服务器上的ASP.NET MVC应用程序进行预热。曾经提供的预热模块位于网址http://forums.iis.net/t/1176740.aspx,但在某个时间被移除了。
每次IIS或ASP.NET工作进程由于任何原因重新启动时,都应该预热应用程序。在预热期间,IIS应返回一些HTTP状态代码,表示其预热状态或无法为任何客户端提供服务的情况。
创建一个可执行文件,通过Http请求浏览站点中必要的页面是否是个好主意?该可执行文件可以从IProcessHostPreloadClient实现中触发。是否可能配置IIS仅接受来自本地主机的请求,一旦可执行文件完成,它就可以切换到所有客户端——但这种切换不应触发IIS重新启动(显然)?
是否可能使用Visual Studio 2010 - Web性能测试来预热应用程序,而不是创建手动可执行文件?还有其他选择吗?
备注:应用程序使用Forms身份验证并使用会话——因此维护状态cookie和其他cookie非常重要。
更新1-我们的应用程序使用.NET Framework 4.0和Entity Framework(数据库优先)。第一次访问EF查询很慢。预热的原因是为了在任何最终用户访问应用程序之前进行这些第一次访问。我们已经在大多数地方使用编译查询,并为EF实现了预编译视图。模型和应用程序的大小非常大且复杂。预热需要遍历许多页面,以确保编译和非编译的EF查询至少执行一次,然后任何最终用户才能访问该应用程序。
每次IIS或ASP.NET工作进程由于任何原因重新启动时,都应该预热应用程序。在预热期间,IIS应返回一些HTTP状态代码,表示其预热状态或无法为任何客户端提供服务的情况。
创建一个可执行文件,通过Http请求浏览站点中必要的页面是否是个好主意?该可执行文件可以从IProcessHostPreloadClient实现中触发。是否可能配置IIS仅接受来自本地主机的请求,一旦可执行文件完成,它就可以切换到所有客户端——但这种切换不应触发IIS重新启动(显然)?
是否可能使用Visual Studio 2010 - Web性能测试来预热应用程序,而不是创建手动可执行文件?还有其他选择吗?
备注:应用程序使用Forms身份验证并使用会话——因此维护状态cookie和其他cookie非常重要。
更新1-我们的应用程序使用.NET Framework 4.0和Entity Framework(数据库优先)。第一次访问EF查询很慢。预热的原因是为了在任何最终用户访问应用程序之前进行这些第一次访问。我们已经在大多数地方使用编译查询,并为EF实现了预编译视图。模型和应用程序的大小非常大且复杂。预热需要遍历许多页面,以确保编译和非编译的EF查询至少执行一次,然后任何最终用户才能访问该应用程序。