Aby przyspieszyć czas reakcji naszej aplikacji ASP.NET MVC, chcielibyśmy "rozgrzać" aplikację po jej zainstalowaniu (lub po zreinstalowaniu puli aplikacji). Niektóre często używane dane wyszukiwania powinny być pobierane z bazy danych SQL Server i przechowywane w globalnym obiekcie System.Runtime.Caching.MemoryCache
dostarczanym przez platformę .NET.ASP.NET MVC - rozgrzewka aplikacji - z którego z dwóch podejść korzystać?
W sytuacji, gdy masz dedykowaną maszynę wirtualną z dedykowanym usługą IIS dla aplikacji ASP.NET, najpierw ustawiam pulę aplikacji jako "Zawsze działa" - to jest krok nr 1.
W tej sytuacji istnieją dwie możliwości widzę: rozgrzewka
Zastosowanie opisanego in this blog post by Scott Gu oparty na interfejsie
System.Web.Hosting.IProcessHostPreloadClient
. Jeśli rozumiem poprawnie, ten kod jest uruchamiany po uruchomieniu puli aplikacji i zanim pierwsze żądanie zostanie zaakceptowane do aplikacjiUżyj zdarzenia
Application_Start
wglobal.asax.cs
. Jeśli dobrze rozumiem, to zdarzenie jest nazywane tylko po raz pierwszy, gdy aplikacja zostanie uruchomiona po raz pierwszy (co nastąpi automatycznie po instalacji, ponieważ pula aplikacji jest ustawiona na "Zawsze działa" - prawda?)
A więc - biorąc pod uwagę tę konfigurację - który jest preferowanym sposobem "rozgrzewania" aplikacji? Czy są jakieś istotne różnice między tymi dwoma podejściami? Czego potrzebuję, aby być świadomym, kiedy przechodzę z jednym podejściem nad drugim?
Dziękujemy za wszelkie informacje wejściowe, wskazówki, ostrzeżenia lub dalsze linki wyjaśniające to bardziej szczegółowo!
Czy Twoja aplikacja jest prekompilowana? jeśli tak połączono/wyłączyłem. Wierzę, że wpłynęłoby to na czas "rozgrzewki". Wydaje mi się, że narzekanie zawsze działa, że cała twoja aplikacja siedzi tam w pamięci i nigdy nie zwalnia "w razie potrzeby"? – DaniDev