【发布时间】:2017-09-27 09:01:23
【问题描述】:
为了加快我们的 ASP.NET MVC 应用程序的反应时间,我们希望在应用程序安装后(或在应用程序池被回收后)对其进行“预热”。应该从 SQL Server 数据库中获取一些常用的查找数据,并将其存储到 .NET 提供的全局 System.Runtime.Caching.MemoryCache 对象中。
对于您的 ASP.NET 应用程序有一个带有专用 IIS 的专用 VM 的情况,我首先将应用程序池设置为“始终运行” - 这是第 1 步。
鉴于这种情况,我看到了两种选择:
如in this blog post by Scott Gu 所述,基于
System.Web.Hosting.IProcessHostPreloadClient接口的应用程序预热。如果我理解正确,这段代码在应用程序池启动时运行,并且在应用程序接受第一个请求之前运行在
global.asax.cs中使用Application_Start事件。如果我理解正确,此事件仅在第一次启动应用程序时调用(安装后会自动发生,因为应用程序池设置为“始终运行” - 对) ?)
那么 - 鉴于此设置 - 哪个是“预热”您的应用程序的首选方式?这两种方法之间有什么显着差异吗?当使用一种方法而不是另一种方法时,我需要注意什么?
感谢您提供任何输入、提示、警告或进一步详细解释此问题的链接!
【问题讨论】:
-
您的应用程序是否已预编译?如果合并/取消合并。我相信这会影响你的“热身”时间。在我看来,始终运行的开销是您的整个应用程序都位于内存中并且永远不会“按需”释放?
标签: c# sql-server asp.net-mvc application-warmup