预加载 Azure 网站以增加首次访问加载时间

本文关键字:加载 访问 时间 Azure 网站 增加 | 更新日期: 2023-09-27 17:55:35

我现在正在为 Azure 创建一个新的 Web 应用程序。

注意到,如果我有一段时间(30 +分钟)不访问该网站,那么在我第一次访问时需要一段时间才能加载(20 +秒)。我认为这是因为Azure必须通过并编译应用程序。有没有办法防止应用程序在长时间空闲后必须遵守。或者以某种方式在本地预先编译 Web 应用程序 - 然后将其部署到 Azure,因此不需要在服务器上遵守它?

我正在使用VS 2012,Web应用程序(Web表单)和Web部署

您可以在此处访问我的网站。

预加载 Azure 网站以增加首次访问加载时间

不幸的是,

Azure网站没有办法解决这个问题。 正如您所说,这是因为IIS是一个需求驱动的Web服务器,因此仅在被要求时才做事。 因此,IIS 工作进程仅在请求到达此工作进程中承载的网站时启动。

如果您使用的是VS2012和Web部署,那么您很可能已经在编译代码。 在 .Net 中,此编译步骤仅将其部分转换为独立于 CPU 的 IL(中间语言),然后工作进程需要将其转换为可在该计算机上运行的本机代码。 这就是为什么您的网站需要一段时间才能加载的原因。

他们确实开始在 IIS 7.5 中发布一个预热模块(应用程序初始化),该模块包含在 IIS 8 中,以解决初始化繁重站点的此问题,不幸的是,它不适用于 Azure 网站,因为它是本机模块。 如果要使用它,则必须切换到 Azure 云服务或虚拟机才能运行站点。

我知道人们使用的另一种选择是使用云监控服务,例如pingdom,它显然会不断向您网站上的页面发出请求,从而使工作进程保持活动状态。 最后一个远非理想的选择是在某处有一个简单的脚本,向页面发出请求以使其保持活动状态。

但是,如果您的网站变得流行,则不需要任何这些步骤,因为人们访问您的网站这一事实将使工作进程保持活动状态。

我刚刚通过谷歌页面速度运行你的网站:https://developers.google.com/speed/pagespeed/insights#url=http_3A_2F_2Fffinfo.azurewebsites.net_2F&mobile=false

如果您担心"共享"网站实例的速度/性能,则应修复其中列出的一些项目。 拥有 375kb 的巨大背景可能不是最好的主意......它甚至没有压缩。

如果可以,请移动到云服务的"超小"实例,您可以优化许多其他内容(关闭 ASP.NET 模块,删除标头,控制压缩,客户端缓存)。 你的目标是拥有一个受欢迎的网站,对吗?...:)立即开始

它不是开箱即用的,但是通过计划ping来保持云服务温暖的一种简单方法是使用Windows Azure移动服务,如此处所述。

它基本上是一个小脚本,计划每 15 分钟访问一次您的网站。

function KeepAlive() 
{     
    KeepSiteAlive("http://www.yousayhello.co.uk");     
}
function KeepSiteAlive (siteurl) 
{
     console.info("Warming up "+siteurl);
     var httpRequest = require('request');
     httpRequest(siteurl, function(err, response, body)         
     {             
        if (err)
        {
                 console.warn("Couldn't retrieve site");                             
        }
        else if (response.statusCode !== 200)
        {
              console.warn("Bad response");             
        }
        else             
        {              
            console.info("Site Warmed Up!");             
        }                         
      });
}