我正在尝试消除(或至少最小化)我的 .NET 应用程序的启动/预热时间。即使这是一个普遍的问题,我也不确定如何做到这一点。
有很多关于 .NET 应用程序启动缓慢的问题。这些很容易通过池回收、工作进程启动、.aspx 文件的动态编译、JIT 等来解释。此外,在应用程序中可能需要初始化更多的东西,例如 EntityFramework 和应用程序缓存。
我发现了很多不同的解决方案,例如:
但是,我对上述任何解决方案都不完全满意。此外,我将我的应用程序部署到 Azure 网站(在大多数情况下),因此我对 IIS 的访问权限有限。
我知道有一些自定义的“预热脚本”使用各种方法向应用程序发送请求(例如 wget/curl)。我的想法是在我的每个 ASP.NET 应用程序中创建一个“Warmup.aspx”页面。然后我有一个预热服务,它每 5 分钟向每个站点的 Warmup.aspx 发送一个 HTTP GET。此服务可以是 Azure 中的 WorkerRole 或本地安装中的 Windows 服务。Warmup.aspx 将执行以下操作:
- 向应用程序中的每个 .aspx 文件发送 HTTP GET(以动态编译页面)
- 这可以通过使用 aspnet_compiler.exe 预编译 .aspx 页面来避免
- 向数据库发送查询以初始化 EntityFramework
- 初始化应用程序缓存等
所以,我的最后一个问题是是否有比我的“Warmup.aspx”脚本更好的替代方案?这是一个好方法还是您推荐其他方法?我真的很想要一些可以处理上述标准的官方方法。
欢迎任何和所有的建议,谢谢!