【问题标题】:IIS: Presenting static content before ASP.NET app first load?IIS:在 ASP.NET 应用程序首次加载之前呈现静态内容?
【发布时间】:2013-11-27 07:15:21
【问题描述】:

如您所知,当您有一个复杂的 ASP.NET 应用程序时,由于 JIT 编译,IIS 中的第一个页面加载速度很慢。

常见的技巧是使用一些新的 IIS 功能和/或使网站保持活跃的外部脚本来预热应用程序。

我们想知道是否有可能有一个简单的 HTML 页面,它会在第一次加载时临时呈现。为了便于讨论,假设这是机器启动时的第一次加载——不可能事先预热。

此 HTML 页面只是在向常规 default.aspx 页面发起 AJAX 请求之前显示加载消息,并且当此其他页面加载时,它会重定向到那里。

看起来应用程序在返回静态页面之前开始了第一次加载 JIT 编译,即使我们将 HTML、图像和脚本指定为使用“StaticFileModule”作为 HTTP 处理程序。

有没有人能够在不使用两个不同的 ASP.NET 应用程序的情况下做到这一点(临时应用程序除了静态内容之外什么都没有)?这种技术有效,但我希望一切都是独立的。

【问题讨论】:

  • 您使用两个应用程序的想法听起来不错。您是否尝试过实施它?没用吗?
  • 发布此消息后测试;确认它有效。将更新我的问题。

标签: asp.net iis


【解决方案1】:

即使网站很冷,应用程序中的普通 .html 文件也应该立即加载。

您可以让此静态页面包含一条消息,其中包含 0 延迟元重定向,该消息开始加载启动站点的下一页,完成后应加载下一页。

只需确保没有为 .html 文件类型注册的处理程序会触发预热,这也会使其变慢。

另请参阅:

【讨论】:

  • 如果我现在没有看到这种行为,是不是有一些东西覆盖了显式定义的 StaticFileModule HTTP 处理程序?
  • @JasonKealey,您是否为它指定了任何处理程序?如果你不这样做呢?你在使用 MVC 路由吗?
  • 有和没有这个:相同的行为。我想我会假设有别的东西在起作用(因为这是一个复杂的应用程序,有很多东西可以与上面交互)
  • 你有<modules runAllManagedModulesForAllRequests="true"吗?另外,请确保您使用 IIS 进行测试,因为我读到:These code samples will run great in your Visual Studio 2008 or 2010 Cassini built-in web server, but if you deploy them to a standard IIS 6 or IIS 7 server, you will be scratching your head because your Global.asax events will not fire when static resources are requested.In IIS 7, the .NET pipeline is fully integrated into IIS but by default, IIS does not serve static resources through your ASP.NET application. So your events will not fire for these types of resources.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2021-09-02
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
相关资源
最近更新 更多