无法在 Web 配置中使用 applicationInitialization 预热页面

2024-01-14

我有一个简单的 Umbraco 7.7.2 应用程序,并将其托管在 Azure(应用程序服务)上。当我重新启动服务器时,第一次请求页面需要 20-40 秒,这真的很烦人,特别是当负载很高并且您处于横向扩展以减少响应时间。

我已经在 webconnfig 中尝试过此设置,但似乎不起作用。

<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 秒。

*P.S: 第一次请求后,网站速度非常快,每个页面加载时间不到 100 毫秒

Update

我已经按照凯文的建议进行了重写以停止下一个重定向。 结果,我的 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] INFO Umbraco.Core.CoreBootManager - Umbraco 应用程序启动完成(花费了 12727ms) 2018-02-08 15:16:54,911 [P7036/D2/T1] INFO 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>

另外,我在微软上找到了另一个类似的配置:

   <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>

请注意,azure 会预热 http 上的 URL,因此,如果您使用重写规则强制使用 https,则整个站点不会预热,只有重定向模块会预热。然后,在 azure 将 Umbraco 添加到负载均衡器并且第一个 https 到达 umbraco 代码后,它需要完成 Umbraco 的预热。我们通过检查扩展时的 http 日志发现了这一点。

我们无法弄清楚如何告诉 azure 使用 https 进行预热,因此我们在强制 https 重写以在 {REMOTE_ADDR} 匹配 127.0.0.* 时停止处理之前制定规则,从而允许 Azure 访问 http 上的站点。

    <rule name="Allow localhost to warmup" stopProcessing="true">
      <match url="(.*)"/>
      <conditions>
        <add input="{REMOTE_ADDR}" pattern="127.0.0.*" />
      </conditions>
    </rule>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 Web 配置中使用 applicationInitialization 预热页面 的相关文章

随机推荐

  • 调整 WriteableBitmap 的大小

    我创建了 Gray16 格式的 WriteableBitmap 我想将此 WriteableBitmap 调整为我已知的尺寸 并保留像素格式 Gray16 是否有人致力于调整 WriteableBitmap 的大小 请帮我 我也在网上搜索了
  • queryselectorAll() 与正则表达式属性选择器

    var arr slice call document querySelectorAll a href pricing 返回一个长度为 6 的数组 var arr slice call document querySelectorAll a
  • 访问 SimpleXMLElement 中的数字属性

    我正在尝试访问以下元素中的数字 但无法从中获取值 echo object gt 0 returns Parse error syntax error unexpected T LNUMBER expecting T STRING or T
  • Maven:POM 模块和子模块层次结构

    我的项目结构如下 module pom xml submodule pom xml pom xml POM 简化 Project
  • 如何使用字符串创建 JSON 对象?

    我想使用 String 创建一个 JSON 对象 例子 JSON test1 value1 test2 id 0 name testName 为了创建上面的 JSON 我使用了它 String message JSONObject json
  • 将多个 javascript 文件合并为一个的工具... [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有一种工具可以将多个javascript文件合并为一个然后压缩它们 雅虎 YUI 压缩器 http developer yahoo c
  • 相同的选择菜单列表项切换

    我正在尝试开发一个涉及 2 个选择列表项的功能 流程是这样的 有两个列表项 相同 具有相同的列表项 当我选择一个选项时Main Tags列表 相同的选项Sub Tags列表应该被禁用 例如 如果我选择Tag 1来自Main Tags然后列出
  • cLion + Qt5 - 退出代码 -1073741515 (0xC0000135)

    我正在尝试使用 QT5 和 cLion 运行简单的测试 但我遇到了退出代码墙 这是我的环境 克狮2017 2minGw 5 0 cMake 3 8 2Qt 5 9 0 CMakeList txt cmake minimum required
  • 从列表中删除项目有困难吗?

    我有两个清单 第一个是所有学生 第二个是选定的学生 我希望如果我一次选择某个学生 他们将从所有学生列表中删除 这是我的代码 但事实并非如此 学生不会被开除 foreach var li in ListSelectedStudents ToL
  • 将 json 数组读入 SQL Server 中的行

    给定下面的示例 json 数据 我如何编写一个查询来一步提取数组数据 我的目标是 ActionRecs 数组 4 中的每一项都占一行 我的实际 json 更复杂 但我认为这给出了我的目标的一个很好的例子 declare json2 nvar
  • 在 Pandas 数据帧上循环时跳过行

    我正在努力解决以下问题 并且似乎在网上找不到任何解决方案 我对数据框有一个 for 循环 该循环应该执行以下操作 如果 reversal 列的内容 1 则用 1 填充 action 列 跳过 125 行 用 1 填充 action 的下一个
  • 如何卸载 Visual Studio 2012 Update 2?

    我安装了 VS2012 然后更新到 VS2012 Update 2 因此我的 Visual Studio 版本为 11 0 60315 01 Update 2 但现在我想恢复到 11 0 50727 1 RTMREL 如何卸载更新 Visu
  • 将系统属性传递给spark-submit并从类路径或自定义路径读取文件

    我最近发现一种使用 logback 代替 log4j 的方法 https stackoverflow com a 45480145 1549135在 Apache Spark 中 既适合本地使用 也适合spark submit 然而 还缺少
  • HttpServlet 类中的“service”方法是什么?

    下面是为了学习而编写的一个简单的servlet package com example tutorial import java io IOException import java io PrintWriter import javax
  • Elasticsearch 中的嵌套查询

    我在使用 elasticsearch 进行嵌套查询时遇到问题 如果我删除其中一个查询字符串 它就可以工作 我试图解决的问题是我有一个包含闭包列表的文档 闭包 我想在闭包列表中搜索一个值 其中另一个值满足某个条件 这只是从 argan 1 的
  • OMP 线程私有对象未被破坏

    底线 如何确保 threadprivate 实例被正确销毁 背景 接听时这个问题 https stackoverflow com questions 32347008 confused about firstprivate and thre
  • 使用函数为输入添加值

    我不知道我创建的函数出了什么问题 我试图创建一个漂亮的国家 地区选择器 但看起来这个选择器不会选择任何内容 只是开玩笑 所以我的问题是根据我的想法 我的函数应该更改分类为的输入字段的值country input单击多个系列的链接时 但看起来
  • 使 Eclipse RCP Intro 成为透视图的一部分

    对于我们正在创建的产品 我们希望能够在透视图中显示欢迎屏幕 我们称之为 从这里开始 简介是该透视图中唯一需要的内容 但是 当我尝试将简介视图添加到透视图中时 它表示该视图已存在于布局中 我尝试过以编程方式关闭介绍 弄乱待机模式等 但我无法让
  • 如果 Laravel 的 Blade 模板检查文件是否存在

    我有一个简单的问题 如何检查 Laravel 的 Blade 模板中是否存在文件 我试过 if file exists covers 1 jpg ok endif 但这不起作用 covers目录位于 public 我还需要提供一个变量 ga
  • 无法在 Web 配置中使用 applicationInitialization 预热页面

    我有一个简单的 Umbraco 7 7 2 应用程序 并将其托管在 Azure 应用程序服务 上 当我重新启动服务器时 第一次请求页面需要 20 40 秒 这真的很烦人 特别是当负载很高并且您处于横向扩展以减少响应时间 我已经在 webco