웹 호스팅 도전
많은 회사 (소규모 회사 및 개인)가 공유 서버에서 호스팅하는 경우 사용 가능한 시스템 구성 옵션이 없다는 것을 기억해야합니다.
ASP.NET MVC 오버 헤드
내 사이트가 20 분 이상 방문하지 않고 웹 앱이 중지 된 경우 30 초 이상 걸립니다. 끔찍하다.
성능을 테스트하는 또 다른 방법
ASP.NET MVC 시작인지 아니면 다른 방법인지 테스트하는 다른 방법이 있습니다. 직접 방문 할 수있는 일반적인 HTML 페이지를 사이트에 놓으십시오.
문제가 ASP.NET MVC 시작과 관련이 있으면 웹 앱이 시작되지 않은 경우에도 HTML 페이지가 거의 즉시 렌더링됩니다.
이것이 문제가 ASP.NET MVC 시작에 있다는 것을 처음으로 인식 한 방법입니다. 언제든지 HTML 페이지를로드했는데 빠르게로드됩니다. 그런 다음 해당 HTML 페이지를 방문한 후 ASP.NET MVC URL 중 하나를 치고 "Waiting for raddev.us ..."라는 Chrome 메시지가 표시됩니다.
유용한 스크립트를 사용한 또 다른 테스트
그 후 8 분마다 웹 사이트에 충돌 하는 LINQPad ( 자세한 내용은 http://linqpad.net 확인 ) 스크립트를 작성했습니다 (앱이 언로드되는 시간보다 짧음-20 분이어야 함). 몇 시간 동안 실행됩니다.
스크립트가 실행되는 동안 나는 내 웹 사이트를 쳤고 내 사이트가 엄청나게 빨라졌습니다. 이로 인해 ASP.NET MVC 시작 시간이 느려졌을 가능성이 가장 높습니다.
LinqPad를 다운로드하면 다음 스크립트를 실행할 수 있습니다. URL을 원하는대로 변경하고 실행하면 쉽게 테스트 할 수 있습니다. 행운을 빕니다.
참고 : LinqPad에서는 F4 를 누르고 System.Net에 대한 참조를 추가하여 페이지를 검색 할 라이브러리를 추가해야합니다.
또한 : 엔진이 실행되도록 ASP.NET MVC 사이트에서 경로를로드 할 URL을 가리 키도록 문자열 URL 변수를 변경하십시오.
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";
}
}