代码之家  ›  专栏  ›  技术社区  ›  Matt Sherman

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

  •  7
  • Matt Sherman  · 技术社区  · 17 年前

    我正在使用一个特别慢的虚拟主机(名称被拒绝!)其中磁盘性能可能非常差。因此,第一次访问我的ASP.NET网站可能需要1分钟以上的时间才能加载。(初始加载后,都在RAM中,很好。)

    我想知道是否有人知道如何指示IIS预加载该站点?是本质,模仿第一次击中?

    我已经玩过所有的预编译工具,这很有帮助,但它不是上面的替代品。

    谢谢!

    5 回复  |  直到 17 年前
        1
  •  3
  •   Anthony    17 年前

    您的应用程序需要回收吗?所有回收选项都在IIS配置中,可以根据您的应用程序进行调整。

    理想的方案是删除所有的应用程序循环,使应用程序始终保持加载状态。只有在web.config文件更改或部署了新版本的应用程序时,才会发生回收。

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

        2
  •  0
  •   Srikar Doddi    17 年前

    为什么不能在批处理文件中重置IIS,并安排它在每天的某个特定时间执行(当您的系统上没有用户时)?

        3
  •  0
  •   Jimmy Chandra    17 年前

    如果您的提供商在重新启动Web服务器时有办法连接到您的网站,则可以在Web服务器重新启动后让一个批处理文件/脚本文件访问您的网站。您只需要点击唯一的ASP.NET程序集文件就可以将该特定程序集存入内存。因此,如果您有一个包含10页的程序集,只需点击其中一页。这应该足够了。如果有多个程序集,请在每个程序集中单击1页,将这些程序集加载到内存中。

    如果你不能在你的提供者那里得到它,那么你必须想出一个更聪明的方法来独自完成这项工作(也就是说,学习提供者何时重置Web服务器,并在你的机器中安排任务来自己访问这些页面)。

        4
  •  0
  •   John Saunders    17 年前

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

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

        5
  •  0
  •   saille    17 年前

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

    因此,解决您的问题的一个简单方法是在任何修改之后立即从应用程序请求一个页面。这样,您是第一个请求页面的人,并且您需要等待很长时间,而不是您的用户。