2016-09-23 27 views
8

Mam poważny problem z wydajnością w witrynie MVC, którą rozwijamy. Gdy witryna jest hostowana na Azure, faza renderowania zajmuje ogromną ilość czasu przy pierwszym ładowaniu strony, mówimy 15-60 na stronę. Kolejne ładunki tej samej strony są ładne i szybkie, jak można się było spodziewać. To jest ślad z Glimpse do trafienia na stronie po raz pierwszy:Witryna MVC na platformie Azure działa bardzo wolno przy pierwszym obciążeniu każdej strony.

enter image description here

Jak widać z wykresu, rendering Razor wydaje się być głównym sprawcy. Czytałem wiele rzeczy na temat wstępnej kompilacji widoków maszynki Razor i próbowałem tego dokonać, ale nie miało to dla nas żadnego znaczenia. Angażuję się także z programistami aplikacji Azure Web App, które wskazywały na problem z Glimpse, ale wypróbowałem aplikację bez Glimpse i jest nadal tak wolna jak zwykle.

Trochę utknęłam tutaj ... jakieś pomysły?

+0

mam przeżywa te same problemy, były od miesięcy. Za każdym razem, gdy robię "publikowanie" w mojej aplikacji internetowej/aplikacji, może upłynąć 40-60 sekund, zanim witryna powróci. "Always On" jest już włączony (ale nie ma zastosowania w tym przypadku). Nie mam pojęcia, co powoduje spowolnienie. Strona nie jest tak skomplikowana. Używam warstwy "Standard: 1 Small". –

+0

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

Odpowiedz

2

Czy po raz pierwszy ładujesz każdą stronę, czy po raz pierwszy trafiasz na stronę po jej nieaktywności?

Po załadowaniu nowych plików do kontenera aplikacji uruchomienie IIS trwa chwilę. Tak więc pierwsza strona po aktualizacji aplikacji będzie wolniejsza. Również aplikacje internetowe Azure są odwadniane po okresie bezczynności. Powoduje to również bardzo powolne działanie pierwszej strony, jeśli strona nie była dostępna od jakiegoś czasu.

Aby temu zapobiec, w ustawień aplikacji dla aplikacji internetowej można znaleźć ustawienie nazywa Always On, które zasadniczo pingi swoją stronę co kilka minut, aby zachować aplikację nawilżona i elastyczne.

+1

Jest to pierwsze obciążenie każdej pojedynczej strony. Zazwyczaj występuje opóźnienie "zimnego startu" .NET, ale zdaję sobie sprawę, że jest to normalne i można je zignorować. Używamy również opcji Always On. – James

4

Znalazłem rozwiązanie pozwalające skrócić czas uruchamiania aplikacji MVC, co jest najbardziej zauważalne w usługach Azure App. Sztuką jest prekompilacja widoków, więc usługi aplikacji nie muszą tego robić dla każdego widoku, który jest potrzebny w momencie żądania.

Podsumowaniem moich ustaleń:

Dodaj do tego MSBuild argumentów i będziesz mieć ASP.NET MVC 5, który rozpocznie się szybciej, a każda nowa strona będzie ładowała się szybciej.

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

Więcej informacji można znaleźć tutaj: http://blog.deltacode.be/2017/01/08/fix-slow-startup-of-asp-net-mvc-5-on-azure-app-services/

Powiązane problemy