13

我第一次在生产网络服务器中加载网站时,它启动非常慢,后续页面加载非常快(包括主页)。

我预编译了网站,但没有任何变化。

我在应用程序启动时没有任何代码。我没有缓存项目。

有任何想法吗?我怎样才能知道发生了什么?

4

11 回答 11

12

这只是您的应用程序域加载并将任何二进制文件加载到内存中。此外,它正在初始化静态变量,因此如果您有一个静态变量从数据库加载大量数据,则可能需要一些时间。

于 2008-08-25T16:00:59.363 回答
2

当您发布网站时,您是否选择在发布网站的设置中使网站“可更新”?如果我没记错的话,aspx / ascx 文件也需要编译,如果它们是“可更新的”,那么第一次启动将导致重新编译这些资源。

于 2008-08-25T15:39:12.130 回答
1

您是否在 web.config 中打开了跟踪?

于 2008-08-25T15:42:02.733 回答
1

尝试清除您的事件日志?

于 2009-06-25T15:38:55.267 回答
1

使用http://www.iis.net/expand/ApplicationWarmUp来预热您的应用程序,这适用于 IIS 7.5 - 因此,如果您在 Server R2 上运行,那么它将起作用。

于 2009-12-31T12:01:35.867 回答
1

确保您在“发布”而不是“调试”中发布您的应用程序。我注意到这大大减少了加载时间。web.config 文件将被更新。

于 2013-11-27T09:28:25.863 回答
0

这听起来很像后台编译;但是,如果您正在预编译,那应该不是问题。

我首先要看的是你的 ORM(如果有的话)。特别是 NHibernate 有一个严重的启动损失,因为它在启动时会在后台运行多个编译器,以将数据层中的每个类转换为自己的内存中程序集。

于 2008-08-25T15:38:02.557 回答
0

只是对达伦快速点头。这是进行 DLL 更新后 .NET 应用程序的典型行为。初始加载后,一切都应该顺利进行。

于 2008-08-25T16:09:07.503 回答
0

当您说“预编译”站点时,您是使用aspnet_compiler实用程序进行预编译,还是仅使用 Visual Studio 中的“构建站点”选项?

如果您不执行前者,我建议您试一试。结合Web 部署项目,您应该可以更轻松地为每个版本部署站点。

于 2008-08-25T17:01:22.263 回答
0

最初的缓慢是几件事:

  • 正在设置 appDomain
  • ASP.NET 正在解析和编译 ASPX 页面。
  • 正在初始化全局上下文。

这是 ASP.NET 的正常行为。

于 2008-08-25T17:10:02.333 回答
0

@Mickey:不,它已关闭。我需要打开它才能找到吗?

跟踪日志将显示每个操作需要多长时间。它可以帮助您找到需要这么长时间的原因。

是一个链接,可以帮助您进行设置。

于 2008-08-27T19:21:10.117 回答