在将 ASP.Net 应用程序部署到新服务器后,第一个点击该应用程序的用户会暂停很长时间,这可能是因为该应用程序正在执行其初始编译。但是,这种暂停似乎也发生在应用程序超时并从内存中卸载自身之后。
第一次编译是可以容忍的,因为它只发生一次,但在我看来,第二次编译应该是不必要的......有解决这个问题的解决方法吗?能够延长应用程序超时会很好,但我只看到了一种延长会话超时的方法,我宁愿不这样做,因为这会使所有用户会话在内存中保留很长一段时间。
在将 ASP.Net 应用程序部署到新服务器后,第一个点击该应用程序的用户会暂停很长时间,这可能是因为该应用程序正在执行其初始编译。但是,这种暂停似乎也发生在应用程序超时并从内存中卸载自身之后。
第一次编译是可以容忍的,因为它只发生一次,但在我看来,第二次编译应该是不必要的......有解决这个问题的解决方法吗?能够延长应用程序超时会很好,但我只看到了一种延长会话超时的方法,我宁愿不这样做,因为这会使所有用户会话在内存中保留很长一段时间。
那是 IIS 关闭工作进程 - 默认是 20 分钟的空闲时间。在 IIS6 中,您可以配置应用程序池并关闭空闲超时(在性能选项卡上)。在 IIS7 中,它位于 Advanced Settings中。
使工作进程保持活动状态的一种常见方法(尽管对我来说看起来很骇人听闻)是让一些程序定期向应用程序中的某个 URL 发出 Web 请求。
您可以通过使用aspnet_compiler.exe预编译 ASP.NET 应用程序来减少初始启动时间。这不会将初始请求时间减少到零(它仍然需要创建工作进程并进行其他内务处理。)但它会显着减少它。
我确实为 IIS 中的应用程序池找到了一些推荐设置。这些设置的预期结果是减少应用程序需要通过启动周期的次数。这些设置应适用于 IIS 6 和 IIS 7: