ASP.NET MVC-初始加载速度慢

问题描述:

我最近创建了一个asp.net mvc web应用程序并在线发布它。ASP.NET MVC-初始加载速度慢

第一次加载网站时,您会发现它需要大约10-15秒的时间才能真正显示,但是在点击一次后,加载速度将与第二次加载一样快。我只是想知道,如果有人可能有一个想法,为什么网站这么久?

+0

这可能是由于几个原因。主要是DNS服务器没有该域的IP地址。此外,这似乎并不是C#/ asp.net问题,现在。 – Abhinav

+0

刚发现另一件事,你的主页有2个非常大的图像。您可能想要调整它们的大小。 – Abhinav

+0

你指的是什么大的图像?你的意思是在页面左边的滑块中?谢谢 –

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

帮助加剧这种情况的东西可能来自编写不好的代码(IE:Application_Start)到您可能正在使用的某些库(例如ORM)的任何内容。你已经加载了多少个模块?

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

推荐使用Google搜索“改善应用程序启动时间”的内容并寻找可能与您的特定应用程序有关的事情。从你的第一个评论

更新:

如果你所看到的应用30分钟一贯这可能与您的应用程序池回收设置在后重新启动(几秒钟挂起) IIS。

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

  1. 应用程序池
  2. 右键单击正在使用您的应用程序(S)
  3. 选择 “循环”
  4. 游泳池,一个窗口将拿出标记为“回收 条件”
  5. 检查这些设置,因为他们将确定何时自动 杀死您的应用程序池并重新启动它。

在总体性能方面,你可能也想尝试:

  1. 添加在您的 的Application_Start()方法或任何其他适用的位置吐出经过时间的一些调试语句,试图 赶上什么时间最长。
  2. 创建一个完全干净的演示项目并进行部署。看看它 遭受同样的问题。如果它不尝试引入更多 以及更多真实代码,直到您检测到放缓。

如果你真的难倒#2可能是,即使这将是可能是最慢的选择你最好的选择。

+0

感谢您的输入。我现在将编译调试设置为false,但似乎没有解决它。我没有使用ORM,网站只是简单地访问一个XML feed,并显示它的原始数据。我不认为我使用了很多(如果有的话)模块。 看来,当我第一次加载网站时,它需要10+秒,但如果我试图在几次后直接加载它,它只需要超过2秒,这是正常的时间。但是,如果我离开它30分钟并回到它,它再次需要10+秒。不确定会造成这种情况。 –

+0

@JamieMclaughlan从上面的评论中对我的文章做了一些补充。希望能有所帮助。 – Timeout

+1

这听起来像是默认的应用程序池“空闲超时”设置,20分钟后会关闭您的应用程序池,并会导致它在第一次加载时(再花费15秒)再次加载。 – VFein

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

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

+0

嗨,感谢您的意见。你的意思是主页左侧滑块中的图像?谢谢 –

+0

是的,图像滑块在左边。我想它会在所有显示的图像被加载后出现。解决方法之一是更改Java脚本,使滑块在加载第一个图像后出现,并/或减小图像的大小。 – feradz

我也有同样的问题,第一次加载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秒

+1

你能否澄清一下你的意思是“startMode”?我只能在高级设置下看到“自动启动”,默认设置为True。 – usefulBee

+1

在windows/system32/inetsrv/config中找到applicationHost.config;找到并找到您的应用程序池并添加以下属性: startMode =“AlwaysRunning” 例如: mesut

+1

请您考虑添加您的评论作为我之前发布的一个问题的答案,并且只是澄清如何从Web.Config文件完成相同的目标,并且我会很乐意接受它作为答案。 http://stackoverflow.com/questions/35046455/how-to-manipulate-application-pool-configurations-in-an-mvc-application – usefulBee

有实现以下几个步骤:

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