【发布时间】:2018-03-26 18:02:55
【问题描述】:
红隼是否支持 applicationInitialization 功能?
这是您可以定义将在应用程序启动后执行的页面(或页面)的功能。基本上是为了预热应用程序。
如果不支持,是否有 Kestrel 的等价物?
【问题讨论】:
-
如果这样的功能甚至可以用于 PHP 网站,ruslany.net/2015/09/… 我看不出它不能用于 ASP.NET Core 的原因。
-
@LexLi 如果您使用 IIS 则可以,但我使用的是独立的 Kestrel。
-
那么从技术上讲,该场景不需要应用程序初始化。 IIS 需要它,因此它可以在 ASP.NET/PHP 完成初始化之前显示警告页面。但是当您运行 Kestrel 时,无论如何您都需要等到整个初始化完成,并且不可能对其进行预热。这正是您需要将 Kestrel 置于反向代理服务器(例如 IIS)之后的原因。
-
@LexLi 您提出的每一点都是错误的。这种情况需要它,因为我已经对其进行了测试,第一次命中有性能损失。警告页面不适用于我,警告页面不是热身的唯一原因。这并不是为什么要把它放在反向代理后面的原因。即使你把它放在反向代理后面,也没有完成预热——IIS 不是唯一的 web 服务器——所以如果你把它放在 apache 或 nginx 后面,你如何解决预热问题——你知道你是怎么做的吗?说没有意义。
-
“警告页面不适用于我”,但这就是您可以从 IIS(或其他具有类似功能的服务器)获得的全部内容。 Microsoft 尚未计划实施您喜欢的那种“热身”,github.com/aspnet/Hosting/issues/809 您可以参考多个线程或创建自己的线程来 ping Microsoft 开发人员,如果这对您更有意义的话。