如何提高IIS/ASP.Net上的启动性能

问题描述:

我正在使用特别慢的虚拟Web主机(名称版主!),其中磁盘性能可能非常差。因此,第一次打到我的ASP.Net网站可能需要1分钟以上的时间才能加载。 (在初始加载后,它全部在RAM中并且没问题。)如何提高IIS/ASP.Net上的启动性能

我想知道是否有人知道指示IIS预加载该网站的方式?是本质,模仿第一击?

我已经玩过所有预编译的东西,它有帮助,但它不是上述的替代品。

谢谢!

+0

看起来像ASP.net 4.0中有更好的支持:http://www.asp.net/learn/whitepapers/aspnet40/#_Toc223325464 – 2009-05-27 06:19:13

您的应用程序是否需要回收?所有的回收选项都在IIS配置中,并且可以进行调整以适合您的应用程序。

理想的情况是删除所有的应用程序回收,以便应用程序始终保持加载状态。那么只有在web.config文件被更改或部署了应用程序的新版本时才会发生回收。

如果需要每日回收,根据以前的回答,可以使用批处理文件回收应用程序,也可以使用应用程序的URL调用iexplore.exe以“预加载”它。

为什么你不能有一个批处理文件,其中iis被重置,并让它计划在特定时间每天执行(当你的系统上没有用户时)?

如果您的提供者可以让您在重新启动Web服务器时挂钩,您可以在Web服务器重新启动后使用批处理文件/脚本文件打击您的网站。您只需要打击唯一的ASP.NET程序集文件即可将该特定程序集存入内存。因此,如果您有一个包含10页的程序集,只需点击其中一个页面即可。这应该够了。如果您有多个装配体,请在每个装配体中打1个页面以将这些装配体装入内存。

如果你不能在你的提供者那里得到它,那么你必须想出一个更聪明的方法来自己做到这一点(即了解提供者何时重置Web服务器和计划任务到你的机器页面自己)。

您希望预先加载多少网站?多少页?

您可以预编译站点,以删除问题的“编译”部分,但如果站点足够大,则可能无法“预加载”站点。如果该网站在多个主机上运行,​​情况尤其如此。

在程序集被修改后,第一次从已编译的ASP.NET应用程序请求页面时,处理的时间比普通的页面请求要长很多。

因此,针对您的问题的一个简单解决方案是在任何修改后立即从应用程序请求页面。这样,你是第一个请求一个页面,并且你会招致漫长的等待,而不是你的用户。