Webhosting-Herausforderung
Sie müssen sich daran erinnern, dass keine der Maschinenkonfigurationsoptionen verfügbar ist, wenn Sie auf einem gemeinsam genutzten Server gehostet werden, wie es viele von uns (kleinere Unternehmen und Einzelpersonen) sind.
ASP.NET MVC-Overhead
Meine Website dauert mindestens 30 Sekunden, wenn sie seit mehr als 20 Minuten nicht mehr aufgerufen wurde (und die Web-App gestoppt wurde). Es ist schrecklich.
Eine andere Möglichkeit, die Leistung zu testen
Es gibt noch eine andere Möglichkeit zu testen, ob es sich um Ihren ASP.NET MVC-Start oder etwas anderes handelt. Legen Sie eine normale HTML-Seite auf Ihrer Website ab, auf die Sie direkt zugreifen können.
Wenn das Problem mit dem Start von ASP.NET MVC zusammenhängt, wird die HTML-Seite fast sofort gerendert, auch wenn die Webanwendung noch nicht gestartet wurde.
So erkannte ich zum ersten Mal, dass das Problem beim Start von ASP.NET MVC auftrat. Ich habe jederzeit eine HTML-Seite geladen und sie wurde blitzschnell geladen. Nachdem ich diese HTML-Seite aufgerufen hatte, traf ich eine meiner ASP.NET MVC-URLs und erhielt die Chrome-Meldung "Warten auf raddev.us ...".
Ein weiterer Test mit hilfreichem Skript
Danach schrieb ich ein LINQPad- Skript ( weitere Informationen finden Sie unter http://linqpad.net ), das alle 8 Minuten auf meine Website gelangt (weniger als die Zeit, die die App zum Entladen benötigt - das sollten 20 Minuten sein), und ließ es es läuft stundenlang.
Während das Skript ausgeführt wurde, habe ich meine Website aufgerufen und jedes Mal, wenn meine Website blitzschnell aufgerufen wurde. Dies gibt mir eine gute Vorstellung davon, dass die Langsamkeit, die ich hatte, höchstwahrscheinlich auf die Startzeiten von ASP.NET MVC zurückzuführen war.
Holen Sie sich LinqPad und Sie können das folgende Skript ausführen - ändern Sie einfach die URL in Ihre eigene und lassen Sie es laufen und Sie können dies einfach testen. Viel Glück.
HINWEIS : In LinqPad müssen Sie F4 drücken und einen Verweis auf System.Net hinzufügen, um die Bibliothek hinzuzufügen, die Ihre Seite abruft.
AUCH : Stellen Sie sicher, dass Sie die Variable String URL so ändern, dass sie auf eine URL verweist, die eine Route von Ihrer ASP.NET MVC-Site lädt, damit die Engine ausgeführt wird.
System.Timers.Timer webKeepAlive = new System.Timers.Timer();
Int64 counter = 0;
void Main()
{
webKeepAlive.Interval = 5000;
webKeepAlive.Elapsed += WebKeepAlive_Elapsed;
webKeepAlive.Start();
}
private void WebKeepAlive_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
webKeepAlive.Stop();
try
{
// ONLY the first time it retrieves the content it will print the string
String finalHtml = GetWebContent();
if (counter < 1)
{
Console.WriteLine(finalHtml);
}
counter++;
}
finally
{
webKeepAlive.Interval = 480000; // every 8 minutes
webKeepAlive.Start();
}
}
public String GetWebContent()
{
try
{
String URL = "http://YOURURL.COM";
WebRequest request = WebRequest.Create(URL);
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
html = sr.ReadToEnd();
}
Console.WriteLine (String.Format("{0} : success",DateTime.Now));
return html;
}
catch (Exception ex)
{
Console.WriteLine (String.Format("{0} -- GetWebContent() : {1}",DateTime.Now,ex.Message));
return "fail";
}
}