2017-09-27 54 views
5

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

  1. 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 aplikacji

  2. Użyj zdarzenia Application_Start w global.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!

+0

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

Odpowiedz

2

Krótka odpowiedź, użyj IProcessHostPreloadClient - uruchomi się natychmiast po uruchomieniu.

Application_Start jest trochę mylące, to faktycznie odpala na pierwsze żądanie. Oznacza to, że witryna może się zrestartować/zrestartować i siedzieć bezczynnie, gdzie może się rozgrzać.

Jeśli Twoja witryna jest w IIS 7 lub nowsza, nie znam powodu, aby używać Application_Start.

+0

Oto odpowiednie/powiązane pytanie: https://stackoverflow.com/questions/10623303/run-application-start-immediately-when-application-pool-restarts-in-is – STW