Azure ASP.NET 热身和部署槽

Azure ASP.NET Warm Up and Deployment Slot

我正在使用 ASP.NET MVC 5 和 Azure Premium 应用服务,并设置了 AlwaysRunning 选项 "on"。

我为 Web 应用程序创建了一个部署槽,部署了我的新版本,打开了槽 URL,一切都快速而稳定。我切换到生产环境,在切换操作完成后,Web 应用程序运行缓慢,就像我手动部署到 PROD 一样。我不得不等待一分多钟才能让我的应用程序再次运行。根据我读到的内容,我认为应用程序会在交换后预热,但没有成功。

为什么交换后这么慢?甚至没有像身份验证表单那样访问数据库的页面。

更新:切换到 V2 计划(SSD 存储)后,应用程序在不到 2 分钟内重新启动:)

要在交换期间预热站点,您必须配置要命中的路由。在 web.config (link):

中你需要这样的东西
<system.webServer>
  <applicationInitialization >
    <add initializationPage="/warmup-cache" hostName="appinit-warmup.azurewebsites.net"/>
  </applicationInitialization>
</system.webServer>

该应用很可能是 re-compiling Razor 视图,这就是它需要一段时间的原因。您可以 pre-compile Razor 视图,这将有很大帮助 ()。也有像上面注册的 warm-up 路由 pre-populates 缓存会有所帮助。