ASP.NET热身/初始化

mik*_*uth 6 asp.net entity-framework precompiled warm-up

我正试图消除(或至少最小化)我的.NET应用程序的启动/预热时间.即使这是一个普遍的问题,我也不确定如何做到这一点.

有关.NET应用程序启动缓慢的大量问题.这些很容易通过池循环,工作进程启动,.aspx文件的动态编译,JIT等来解释.此外,还有更多可能需要在应用程序中初始化的东西,如EntityFramework和应用程序缓存.

我发现了很多不同的解决方案,例如:

但是,我对上述任何解决方案都不满意.此外,我正在将我的应用程序部署到Azure网站(在大多数情况下),因此我对IIS的访问权限有限.

我知道有一些自定义的"热身脚本"使用各种方法向应用程序发送请求(例如wget/curl).我的想法是在我的每个ASP.NET应用程序中创建一个"Warmup.aspx"页面.然后我有一个热身服务,每隔5分钟就会向每个站点的Warmup.aspx发送一个HTTP GET.此服务可以是Azure中的WorkerRole,也可以是内部部署安装中的Windows服务.Warmup.aspx将执行以下操作:

  • 将HTTP GET发送到应用程序中的每个.aspx文件(以动态编译页面)
    • 使用aspnet_compiler.exe预编译.aspx页面可以避免这种情况
  • 向数据库发送查询以初始化EntityFramework
  • 初始化应用程序缓存等

所以,我的最后一个问题是,是否有比"Warmup.aspx"脚本更好的选择?这是一个好方法还是你推荐其他方法?我真的想要一些能够处理上述标准的官方方法.

欢迎任何和所有建议,谢谢!

usr*_*usr 0

您可以有该站点的两个实例。当您需要部署新版本并因此遭受启动周期时,请从负载均衡器轮换中删除一个实例,部署并启动它,将其设置并执行与实例 2 相同的操作。滚动部署。