Виклик веб-хостингу
Ви повинні пам’ятати, що жоден із параметрів конфігурації машини не доступний, якщо ви розміщені на спільному сервері, як і багато з нас (менші компанії та приватні особи).
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, щоб додати бібліотеку, яка буде завантажувати вашу сторінку.
ТАКОЖ : переконайтеся, що ви змінили змінну String URL, щоб вказати на 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";
}
}