我有一个简单的 Umbraco 7.7.2 应用程序,我将它托管在 Azure(应用程序服务)上。当我重新启动服务器时,第一次请求一个页面需要 20-40 秒,这在负载很高并且您正在向外扩展以减少响应时间时特别烦人。
我已经在我的 webconfig 中尝试过这个设置,但它似乎不起作用。
<system.webServer>
<applicationInitialization>
<add initializationPage="/page1/?warmup=1" hostName="mydomain.com" />
<add initializationPage="/page1/page2/?warmup=1" hostName="mydomain.com" />
</applicationInitialization>
</system.webServer>
我可能以错误的方式尝试它,但我所做的是重新启动服务器并且我已经离开它 2-3 分钟而没有请求任何页面。
我检查了我的 Umbraco 日志,但应用程序甚至没有启动。然后我请求了主页,花了 40 秒才出现。
然后我尝试了 mydomain.com/page1 ,它也花了 20 秒,因为它是第一个访问它的请求。
*PS:第一次请求后,网站非常快,每个页面加载不到 100 毫秒
更新
正如凯文所建议的那样,我已经实施了重写以停止下一个重定向。结果,我的 Umbraco 将启动,但请求仍然无法到达页面。
在我的母版页上,我添加了一行来在日志中写入一行,如果它在查询字符串中有预热并且它可以从浏览器点击页面:
if (!string.IsNullOrWhiteSpace( Request.QueryString["warmup"]))
{
var pageC = Model.Content;
logger.Info(pageC.UrlAbsolute()+" "+ Request.QueryString);
}
但是,之后我的日志中没有任何内容
2018-02-08 15:16:51,245 [P7036/D2/T1] 信息 Umbraco.Core.CoreBootManager - Umbraco 应用程序启动完成(耗时 12727 毫秒) 2018-02-08 15:16:54,911 [P7036/D2/T1] 信息MyNamespace.Web.CustomStartup - 基本配置完成!
这是我根据凯文的回答添加的配置:
<rule name="No redirect on warmup request (request from localhost with warmup user agent)" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REMOTE_ADDR}" pattern="127.0.0.*" />
</conditions>
<action type="Rewrite" url="{URL}" />
</rule>
另外,我在 Microsoft 上发现了另一个类似的配置:
<rule name="No redirect on warmup request (request from localhost with warmup user agent)" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="localhost" />
<add input="{HTTP_USER_AGENT}" pattern="Initialization" />
</conditions>
<action type="Rewrite" url="{URL}" />
</rule>