Azure上的MVC网站在每个页面的第一次加载时超级慢

Jam*_*mes 12 asp.net-mvc performance azure razor asp.net-mvc-5

我正在开发一个MVC网站上的性能问题.当站点在Azure中托管时,在第一次加载页面时,视图的呈现阶段会花费大量时间,我们每页说的是15-60秒.之后对同一页面的后续加载非常快速,正如人们所期望的那样.这是来自Glimpse的第一次点击页面的痕迹:

在此输入图像描述

从图中可以看出,Razor渲染似乎是主要的攻击者.我已经阅读了很多关于Razor视图预编译的内容,我已经尝试过实现它,但它对我们没有任何影响.我也正在使用Azure Web App开发人员,他们指责Glimpse是一个问题,但我已经尝试过没有安装Glimpse的应用程序,它仍然像往常一样慢.

我变得非常困在这里......任何想法?

Dav*_*ere 5

我找到了一种加快MVC应用程序启动时间的解决方案,其中最引人注目的是Azure应用程序服务。诀窍是预先编译视图,因此App服务不必针对请求时所需的每个视图执行此操作。

我的发现摘要:

将其添加到MSBuild参数中,您将拥有一个ASP.NET MVC 5,它将更快地启动,并且每个新页面的加载都将更快。

/p:PrecompileBeforePublish=true /p:UseMerge=true /p:SingleAssemblyName=AppCode
Run Code Online (Sandbox Code Playgroud)

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


小智 4

是第一次加载每个页面,还是在不活动后第一次访问该网站?

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

为了解决这个问题,在Web 应用程序的应用程序设置中,您可以找到一个名为Always On的设置,该设置基本上每隔几分钟就会对您的页面执行 ping 操作,以保持应用程序的流畅性和响应能力。

  • 这是每个单独页面的第一次加载。通常存在 .NET“冷启动”延迟,但我知道这是正常现象,可以忽略。我们也使用“始终在线”选项。 (2认同)