6 c# webforms asp.net-4.5 azure-web-sites
我现在正在为Azure创建一个新的Web应用程序.
我注意到如果我没有访问该网站一段时间(30多分钟),我第一次访问时需要一段时间才能加载(20+秒).我认为这是因为Azure必须经历并编译应用程序.有没有办法防止应用程序在空闲一段时间后必须被编译.或者以某种方式在本地预先编译Web应用程序 - 然后将其部署到Azure,这样就不需要在服务器上进行编译了?
我正在使用VS 2012,Web应用程序(Web窗体)和Web部署
您可以访问我的网站在这里.
不幸的是,Azure 网站无法解决这个问题。正如您所说,这是因为 IIS 是一个需求驱动的 Web 服务器,因此仅在需要时才执行操作。因此,只有当请求到达该工作进程中托管的站点时,IIS 工作进程才会启动。
如果您使用 VS2012 和 Web 部署,那么您很可能已经编译了代码。在 .Net 中,此编译步骤仅将其部分转化为与 CPU 无关的 IL(中间语言),然后工作进程需要将其转换为可在该计算机上运行的本机代码。这就是您的网站需要一段时间才能加载的原因。
他们确实开始使用 IIS 7.5 提供一个预热模块(应用程序初始化),该模块包含在 IIS 8 中,以解决初始化繁重站点的此问题,不幸的是,它不适用于 Azure 网站,因为它是本机模块。如果您想使用它,则必须切换到 Azure 云服务或虚拟机来运行您的站点。
我认识的人使用的另一种选择是使用云监控服务,例如 pingdom,它显然会不断向站点上的页面发出请求,从而使工作进程保持活动状态。最后一个远非理想的选择是在某处放置一个简单的脚本,向页面发出请求以使其保持活动状态。
但是,如果您的网站变得流行,则无需执行任何这些步骤,因为人们访问您的网站这一事实将使工作进程保持活动状态。