ASP.Net上的预编译和启动时间

时间:2020-03-05 18:51:23  来源:igfitidea点击:

我正在ASP.Net 2.0中开发一个(相对较小的)网站。我还使用nAnt在交付可执行文件之前对我的项目进行了一些简单的调整。在当前状态下,使用以下方式对网站进行"预编译":

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

我已经注意到,在重新启动IIS池之后(在空闲关闭或者回收之后),该应用程序最多需要20秒才能恢复联机(并达到Application_start)。

当我直接在Visual Studio中调试时(启动需要2秒钟),我没有相同的问题,所以我想知道aspnet_compiler是否真的是一个好主意。

我在MSDN上找不到很多。我们如何编译网站以进行生产?

解决方案

回答

确保:

  • 我们使用的是Web应用程序项目,而不是Web站点项目,这将为代码提供预编译的二进制文件。
  • 我们已关闭了web.config文件中的调试代码生成功能-我想这是否与使用aspnet_compiler时不同,可能会重新编译代码

如果我们尝试过这些,则可以尝试在程序集上运行ngen从而节省JIT时间?

回答

确保在web.config<compilation debug = false>中设置了此设置。就我而言,我还有一个批处理文件,该文件在向用户提供信息之前发出对所有主要页面的获取请求(页面加载模拟)。

回答

@西蒙(Simon):

  • 该项目是一个Web应用程序。那么,网站的启动速度就会变慢(除了不同的代码组织外,我不知道它会发生什么)?
  • 我检查了一下,在调用aspnet_compiler之后编辑web.config的过程中,我没有触摸调试值(但是,如果我不触摸web.config,我将检查网站启动的速度是否更快,只是为了使当然)

(而且我肯定会看一下ngen的,我并不知道该工具。)

回答

如果网站被编译为可更新的,我们将在虚拟目录中看到一堆.ASPX文件。这些必须在启动时进行编译。这样一来,我们就可以进入并更改Web UI本身。这是网站和Web应用程序的默认设置。

回答

为了获得最高的响应速度,请勿关闭应用程序。

第一种方法是确保它非常受欢迎,以便总有人在使用它。

或者,从其他地方获取一个很小的保持活动页面作为预定活动,可以使网站保持"热"状态。