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

时间:2014-01-15 23:10:08

标签: c# asp.net asp.net-mvc web-applications

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

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

5 个答案:

答案 0 :(得分:24)

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

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

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

建议使用“改善应用程序启动时间”来搜索某些内容,并查找可能与您的特定应用程序相关的内容。

从您的第一条评论中更新:

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

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

  1. 应用程序池
  2. 右键单击用于您的应用程序的池
  3. 选择“回收”,会出现一个标有“回收”的窗口 条件“
  4. 检查这些设置,因为他们将确定何时 自动终止您的应用池并重新启动。
  5. 就一般表现而言,您可能想尝试:

    1. 添加一些调试语句,这些语句会耗尽您的时间 Application_Start()方法或任何其他适用的位置来尝试 抓住最长的东西。
    2. 创建一个完全干净的演示项目并进行部署。看看它 遭遇同样的问题。如果不尝试引入更多 在你发现减速之前,你需要更多真实的代码。
    3. 如果您 真的 难倒#2可能是您最好的选择,即使它可能是最慢的选项。

答案 1 :(得分:23)

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

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

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

在第一步中,没有第一次请求您的网站, 为了预加载您的网站,我们需要另一个步骤,即从here

安装iis7.5的应用程序初始化模块

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

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

在第二步之后,我的网站仅在1-3秒内加载

答案 2 :(得分:0)

除了周杰伦所说的......你应该考虑你的应用池的内存使用情况。对于共享主机环境尤其如此,一旦达到内存限制(而不是基于时间),您的提供商通常会回收应用程序池。这将再次导致您的站点“重新启动”,从而导致初始加载性能问题。

答案 3 :(得分:-1)

看起来旋转的图像有点大。在我的浏览器中,此部分加载最后一个。页面的其余部分加载速度非常快。您可能会考虑调整这些图像的大小。此外,大型JavaScript文件可能会在初始加载过程中导致一些减速。

答案 4 :(得分:-4)

实施的步骤很少:

  1. 客户端缓存
  2. 捆绑和缩小
  3. 服务器端缓存
  4. 使用IIS管理器配置自动启动