2016-09-23 103 views
8

我在开发MVC网站时遇到了性能问题。当该网站托管在Azure中时,第一次加载页面时,视图的渲染阶段需要大量时间,我们每个页面都是15-60秒。其后的相同页面的后续加载非常快速,正如人们所期望的那样。这是一个掠影一丝页面上命中的第一次:关于Azure的MVC网站在每个页面的第一次加载时速度超慢

enter image description here

正如你可以从图中看到,剃刀渲染似乎是主要罪犯。我已经阅读了很多关于Razor视图预编译的内容,我尝试过实现这一点,但对我们来说它没有任何影响。我还与Azure Web App开发者进行了接触,他们指出Glimpse是一个问题,但我已经尝试了没有安装Glimpse的应用程序,它仍然像往常一样缓慢。

我在这里很困难...有什么想法吗?

+0

我遇到了同样的问题,已经好几个月了。每当我对我的网络应用程序/应用程序服务进行“发布”时,网站可能需要40-60秒才能恢复。 “永远在线”已经开启(但在这种情况下不适用)。不知道是什么导致了缓慢。该网站并不复杂。我正在使用“Standard:1 Small”层。 –

+0

http://programmers.stackexchange.com/questions/97538/why-after-each-restart-my-local-net-sites-take-time-to-load-for-the-first-time – JamieD77

回答

2

是第一次加载每个页面,还是第一次在闲置之后点击该网站?

将新文件上传到应用容器后,IIS需要一段时间才能启动。因此,更新应用程序后第一页会比较慢。此外,Azure Web Apps在闲置一段时间后会脱水。这也会导致如果页面在一段时间内没有被访问,则首页命中速度非常慢。

为了解决这个问题,在Web应用程序中的应用程序设置,你可以找到一个名为设置始终,基本上坪你的页面每隔几分钟,以保持应用程序水合和响应。

+1

这是首先加载每个单独的页面。通常的.NET'冷启动'延迟存在,但我知道这是正常的,可以忽略。我们也使用Always On选项。 – James

4

我发现了一个解决方案,可以加快MVC应用程序的启动时间,其中最值得关注的是Azure应用程序服务。诀窍是预编译视图,所以App服务不必为请求时所需的每个视图执行此操作。

我的调查结果的总结:

一下添加到的MSBuild论点,你就会有一个ASP.NET MVC 5,将更快地启动和每一个新的页面加载速度更快。

/p:PrecompileBeforePublish=true /p:UseMerge=true /p:SingleAssemblyName=AppCode 

更多信息可以在这里找到:http://blog.deltacode.be/2017/01/08/fix-slow-startup-of-asp-net-mvc-5-on-azure-app-services/

相关问题