Défi d'hébergement Web
Vous devez vous rappeler qu'aucune des options de configuration de la machine n'est disponible si vous êtes hébergé sur un serveur partagé comme beaucoup d'entre nous (petites entreprises et particuliers) le sont.
Frais généraux ASP.NET MVC
Mon site prend au moins 30 secondes lorsqu'il n'a pas été consulté depuis plus de 20 minutes (et que l'application Web a été arrêtée). C'est terrible.
Une autre façon de tester les performances
Il existe un autre moyen de tester s'il s'agit de votre démarrage ASP.NET MVC ou de quelque chose d'autre. Déposez une page HTML normale sur votre site où vous pouvez la consulter directement.
Si le problème est lié au démarrage d'ASP.NET MVC, la page HTML s'affichera presque immédiatement même lorsque l'application Web n'a pas été démarrée.
C'est ainsi que j'ai reconnu pour la première fois que le problème était au démarrage d'ASP.NET MVC. J'ai chargé une page HTML à tout moment et elle se chargerait très rapidement. Ensuite, après avoir frappé cette page HTML, j'ai frappé l'une de mes URL ASP.NET MVC et j'obtiens le message Chrome "En attente de raddev.us ..."
Un autre test avec un script utile
Après cela, j'ai écrit un script LINQPad (consultez http://linqpad.net pour plus d'informations) qui frapperait mon site Web toutes les 8 minutes (moins que le temps de déchargement de l'application - ce qui devrait être de 20 minutes) et je laisse il a fonctionné pendant des heures.
Pendant que le script était en cours d'exécution, j'ai frappé mon site Web et chaque fois que mon site est apparu d'une vitesse fulgurante. Cela me donne une bonne idée que la lenteur que je rencontrais était probablement due aux temps de démarrage d'ASP.NET MVC.
Obtenez LinqPad et vous pouvez exécuter le script suivant - changez simplement l'URL et laissez-la s'exécuter et vous pouvez le tester facilement. Bonne chance.
REMARQUE : Dans LinqPad, vous devrez appuyer sur F4 et ajouter une référence à System.Net pour ajouter la bibliothèque qui récupérera votre page.
AUSSI : assurez-vous de modifier la variable URL de chaîne pour qu'elle pointe vers une URL qui chargera une route à partir de votre site ASP.NET MVC afin que le moteur s'exécute.
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";
}
}