2016-09-23 107 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/

相關問題