ASP.NET 预热/初始化

标签 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”脚本更好的替代方案?这是一个好方法还是您推荐其他方法?我真的很想要一些可以处理上述标准的官方方法。

欢迎任何建议,谢谢!

最佳答案

关于ASP.NET 预热/初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11854243/

相关文章:

asp.net - 通过子域 ASP.NET 进行表单例份验证

c# - 使用 Entity Framework 4.1 将位字段参数传递给存储过程

c# - 引用继承类型的 UWP EF SQLite 抛出异常

c# - 运算符 '==' 不能应用于 linq to entity 中类型为 'System.Guid' 和 'string' 的操作数

c# - 编译表达式比解释版本运行得慢得多

适用于 Windows 的 Python SVN 绑定(bind)

ASP.Net Web Api Controller 设计指南

asp.net - 在 asp.net 4 中通过登录控件传递查询字符串?

css - Bootstrap 弹出窗口和 asp :button 的问题

c - 跳过 OpenGL 预编译 header