ASP.NET MVC - 缓慢的初始加载

Jam*_*lan 44 c# asp.net asp.net-mvc web-applications

我最近创建了一个asp.net mvc Web应用程序并在线发布.

首次加载网站时,您会发现它实际显示大约需要10-15秒,但是在点击一次之后,它会加载到第二次加载的速度.我只是想知道是否有人可能知道为什么网站花了这么长时间?

Tim*_*out 29

通常,应用程序在应用程序域启动时总是需要一些额外的时间来加载.

帮助加剧这种情况的事情可能是编写糟糕的代码(IE:Application_Start)到您可能正在使用的某些库(例如ORM).你加载了多少个模块?

对于初学者,请检查您的web.config以查找臭名昭着的内容<compilation debug="true">.这可能会在生产设置中产生重大的性能影响.将其设置为"false"!

建议使用" 改善应用程序启动时间 "并查找可能与您的特定应用程序相关的内容.

从您的第一条评论更新:

如果您在30分钟后看到应用程序再次启动(挂起几秒钟),则可能与IIS中的"应用程序池回收"设置有关.

进入IIS管理器(这假定为v7 +):

  1. 应用程序池
  2. 右键单击用于您的应用程序的池
  3. 选择"回收",会出现一个标有"回收条件"的窗口
  4. 检查这些设置,因为他们将确定何时 自动终止您的应用程序池并重新启动它.

在一般性能方面,您可能想尝试:

  1. 添加一些调试语句,这些语句会在Application_Start()方法或任何其他适用位置中吐出已用时间,以尝试捕获最长时间的内容.
  2. 创建一个完全干净的演示项目并进行部署.看看它是否有同样的问题.如果它没有尝试引入越来越多的实际代码,直到您检测到减速.

如果你真的很难过#2可能是你最好的选择,即使它可能是最慢的选择.

  • 这听起来像默认的应用程序池"空闲超时"设置,在20分钟后将关闭您的应用程序池,并在第一次返回时再次加载(这需要15秒). (2认同)

mes*_*sut 25

我也有同样的问题,首先加载asp.net mvc网站的速度很慢,最后我找到了加载网站的最佳方式,在第一次加载时速度非常快.

我的解决方案适用于Windows Server 2008 r2和IIS 7.5,但在上层Windows服务器和上层iis版本中也可以使用,但有一些简单的差异.

首先,您必须将应用程序池的startMode设置为始终运行,这将在一段时间后阻止您的应用程序池休眠.(在我的情况下,这一步只是将我的网站首次加载从45-55秒加载到大约8-12秒).

在第一步中,没有第一次请求您的网站,为了预加载您的网站,我们需要另一个步骤,即从这里安装iis7.5的应用程序初始化模块

在第二步中,您必须为您的网站设置preloadEnabled = true,此选项是应用程序初始化添加到网站设置的.

有关更多信息以及如何设置这些选项,请参阅此博客文章:http: //blogs.iis.net/wadeh/application-initialization-part-2

在第二步之后,我的网站只需1-3秒即可加载.