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

时间:2008-09-11 11:53:53

标签: c# asp.net compilation startup aspnet-compiler

我正在ASP.Net 2.0中开发一个(相对较小的)网站。在发送可执行文件之前,我还使用nAnt对我的项目进行了一些简单的调整。在目前的状态下,该网站使用

进行“预编译”
  

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

我注意到重新启动IIS池后(在空闲关闭或回收之后),应用程序在重新联机(并且到达Application_start)之前最多需要20秒。

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

我在MSDN上找不到多少。你如何编辑你的网站进行制作?

6 个答案:

答案 0 :(得分:4)

确保:

  1. 您正在使用Web应用程序项目而不是Web站点项目,这将为您的代码生成预编译的二进制文件
  2. 您已关闭web.config文件中的调试代码生成 - 我想如果这与您使用aspnet_compiler时的代码可能会被重新编译不同
  3. 如果您尝试过这些,可以尝试在组件上运行ngen,从而节省JIT时间吗?

答案 1 :(得分:4)

要获得最终的反应,请不要让您的应用关闭。

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

或者,可以使用其他地方的小型保持活动页面作为计划活动来保持您的网站“热门”。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

关键是确保IIS应用程序池永远不会关闭。这是代码实际托管的地方。将“空闲超时”(在“高级设置”下)设置为非常高的值,例如1440分钟(24小时),以确保只要有人每天都会访问您的网站,就不会关闭它。

每当您部署新代码时,您仍然会有JIT时间,或者在没有任何流量的情况下超出此空闲超时时间。

Configuring IIS 7.x Idle Timeout

答案 5 :(得分:0)

@Simon:

  • 该项目是一个Web应用程序。网站的启动速度较慢(我不知道它有不同的代码组织的发生率)?
  • 我检查过,当我在调用aspnet_compiler后编辑web.config时,我没有触及调试值(但是如果我不触摸web.config,我会检查网站启动速度不快,只是为了确保)

(我肯定会看看ngen,我不知道这个工具。)