5

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

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

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

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

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

4

6 回答 6

4

确保:

  1. 您正在使用 Web 应用程序项目而不是 Web 站点项目,这将导致您的代码的预编译二进制文件
  2. 您已在 web.config 文件中关闭了调试代码生成 - 我猜如果这与您使用 aspnet_compiler 时不同,代码可能会被重新编译

如果您尝试过这些,您也许可以尝试在您的程序集上运行 ngen 从而节省 JIT 时间?

于 2008-09-11T11:56:57.767 回答
4

为了最终的响应,不要让你的应用程序被关闭。

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

或者,可以使用从其他地方获取一个很小的保活页面作为计划活动来保持您的网站“热”。

于 2008-09-11T12:38:21.237 回答
2

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

于 2008-09-11T12:19:48.443 回答
1

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

于 2008-09-11T12:00:11.657 回答
1

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

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

配置 IIS 7.x 空闲超时

于 2011-04-06T21:32:26.277 回答
0

@西蒙:

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

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

于 2008-09-11T12:05:24.610 回答