ASP.NET MVC-rendering lijkt traag

Ik heb een gloednieuwe MVC4-webtoepassing gemaakt in Visual Studio en heb er niets meer mee gedaan dan een Home-controller en een “Hallo wereld”-indexweergave ervoor toe te voegen. Ik heb toen het MiniProfiler NuGet-pakket geïnstalleerd en de benodigde paar regels in _Layout.cshtmlgezet. Dit krijg ik als ik de site in de release-modus (gehost in IIS) gebruik:

De weergavetijd varieert per paginabelasting, maar 130 ms is ongeveer net zo snel als mogelijk is. Dit lijkt me een beetje traag, aangezien ik andere mensen heb gezien die pagina’s in 30 ms of sneller weergegeven krijgen. Enig idee waarom de weergave zo traag zou zijn met een gloednieuw leeg MVC4-project? Mijn processor is een Intel Core i5-2400 en de machine heeft 16 GB RAM.

Trouwens, dit is nietde eerste keer dat de pagina wordt geladen; Ik heb de pagina een paar keer opnieuw geladen voordat ik dit resultaat van 130 ms kreeg.

UPDATE:
Ik volgde het advies in het antwoord van PSCoder (verwijder alles behalve de RazorViewEngine), en het halveerde de weergavetijd:

Dit is echt goed, maar ik krijg nog steeds ongeveer 70 ms of hoger voor de hoofdactie Rendervan de pagina; idealiter zou ik dat willen halveren of beter.

In het bijzonder zou ik willen vragen:

  • Lijkt deze weergavetijd te traag of is het gemiddeld voor mijn machine?
  • Is er een manier om het te versnellen?

Antwoord 1, autoriteit 100%

Dit zou kunnen helpen bij het verbeteren van ASP.NET MVC-gerelateerde prestatieproblemen. Een prestatieverbetering die u kunt doen, is door alle weergave-engines te wissen en degene die u gebruikt toe te voegen. zeg bijvoorbeeld:- RazorViewEngine. MVC registreert standaard 2 view-engines Webformsen Razorview-engines, dus het wissen en toevoegen van degene die alleen worden gebruikt, zal de opzoekprestaties verbeteren.

Je kunt dit toevoegen in global.asaxApplication_Start.

       ViewEngines.Engines.Clear();    
        ViewEngines.Engines.Add(new RazorViewEngine());      

Om volledig gebruik te kunnen maken van view-look-up-caching en dus opnieuw prestatiewinst, moet u de code compileren in de release-modus en ervoor zorgen dat uw Web.Config-bestand is geconfigureerd met <compilation debug="false" />voor view look-up caching om in te schakelen.


Antwoord 2, autoriteit 74%

Toevoegen aan het antwoord van @PSL – we controleren alleen op `.CSHTML-bestanden

ViewEngines.Engines.Clear();
IViewEngine razorEngine = new RazorViewEngine() { FileExtensions = new string[] { "cshtml" } };
ViewEngines.Engines.Add(razorEngine);

Zorg er ook voor dat je in Release Modedraait – dat is absoluut cruciaal, aangezien ASP/Razor/MVC ‘een behoorlijk agressieve caching toepast‘ in de release-modus

<compilation targetFramework="4.0" debug="false">in uw Web.Config-bestand.

Sam Saffron/Stack Overflow heeft ook gekeken naar weergaveprestaties:

http://samsaffron.com/archive/2011/08/16/Oh+view+where+are+thou+finding+views+in+ASPNET+MVC3+


Antwoord 3

Weergaven worden voor gebruik gecompileerd – dus de eerste keer zijn ze traag.

Vervolgens worden ze opnieuw gecompileerd als het .cshtml-bestand verandert – wat betekent dat de mappen waarin weergaven zijn opgeslagen, worden gecontroleerd. De snelheid van de harde schijf zal dus een factor zijn voor MVC-weergaven.

Zelfs als ze niets doen, controleert elke rendering-engine de harde schijf op .cshtml– of .aspx-bestanden. Omdat het verwijderen van een rendering-engine ervoor zorgde dat het twee keer zo snel liep, vermoed ik dat de schijfsnelheid het probleem is:

  • Beelden worden opgeslagen op een netwerkschijf, of
  • Harde schijf is erg traag

Antwoord 4

Compileer de weergaven vooraf om de eerste weergave te versnellen..

Controleer de onderstaande blog ..

https://blog.deltacode.be/2017/01/08/Fix-Slow-startup-of-aSp-net-mvc-5-on-aZure-App-services/

Other episodes