Задача веб-хостинга
Вы должны помнить, что ни один из вариантов конфигурации машины недоступен, если вы размещены на общем сервере, как многие из нас (небольшие компании и частные лица).
Накладные расходы ASP.NET MVC
Мой сайт занимает не менее 30 секунд, если на него не обращались более 20 минут (и веб-приложение было остановлено). Это ужасно.
Еще один способ проверить производительность
Есть еще один способ проверить, запускается ли это ваш ASP.NET MVC или что-то еще. Перетащите обычную HTML-страницу на свой сайт, где вы можете напрямую перейти к ней.
Если проблема связана с запуском ASP.NET MVC, HTML-страница будет отображаться почти сразу, даже если веб-приложение не было запущено.
Вот так я впервые понял, что проблема была в запуске ASP.NET MVC. Я загружал HTML-страницу в любое время, и она загружалась молниеносно. Затем, открыв эту HTML-страницу, я попадал по одному из своих URL-адресов ASP.NET MVC и получал сообщение Chrome «Ожидание raddev.us ...»
Еще один тест с помощью полезного сценария
После этого я написал сценарий LINQPad ( подробнее см. Http://linqpad.net ), который будет попадать на мой веб-сайт каждые 8 минут (меньше, чем время для выгрузки приложения - которое должно быть 20 минут), и я позволил он работает часами.
Пока работал скрипт, я заходил на свой веб-сайт, и каждый раз мой сайт открывался невероятно быстро. Это дает мне хорошее представление о том, что, скорее всего, я столкнулся с медлительностью из-за времени запуска ASP.NET MVC.
Получите LinqPad, и вы сможете запустить следующий сценарий - просто измените URL-адрес на свой собственный и дайте ему запуститься, и вы легко сможете это проверить. Удачи.
ПРИМЕЧАНИЕ . В LinqPad вам нужно будет нажать F4 и добавить ссылку на System.Net, чтобы добавить библиотеку, которая будет получать вашу страницу.
ТАКЖЕ : убедитесь, что вы изменили переменную URL-адреса String, чтобы она указывала на URL-адрес, который будет загружать маршрут с вашего сайта ASP.NET MVC, чтобы двигатель работал.
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";
}
}