ウェブホスティングチャレンジ
私たちの多く(小規模の企業や個人)と同じように、共有サーバーでホストされている場合は、どのマシン構成オプションも使用できないことに注意してください。
ASP.NET MVCオーバーヘッド
サイトが20分以上ヒットしなかった(そしてWebアプリが停止した)場合、少なくとも30秒かかります。ひどいです。
パフォーマンスをテストする別の方法
それがASP.NET MVCの起動か何かであるかをテストする別の方法があります。直接ヒットできる通常のHTMLページをサイトにドロップします。
問題がASP.NET MVCの起動に関連している場合、Webアプリが起動されていなくても、HTMLページはほとんどすぐにレンダリングされます。
これが、ASP.NET MVCの起動に問題があることを最初に認識した方法です。私はいつでもHTMLページをロードしましたが、非常に高速にロードされました。次に、そのHTMLページにアクセスした後、ASP.NET MVC URLの1つにアクセスし、Chromeメッセージ「Watting for raddev.us ...」が表示されます。
役立つスクリプトを使用した別のテスト
その後、私はLINQPad(http://linqpad.netをチェックしてください)スクリプトを8分ごとに(つまり、アプリがアンロードされるまでの時間-20分未満)ヒットするスクリプトを書いて、それは数時間実行されます。
スクリプトが実行されている間、私は自分のWebサイトにアクセスし、毎回私のサイトが非常に高速に起動しました。これは、私が経験していた遅いのはASP.NET MVCの起動時間が原因である可能性が高いと考えています。
LinqPadを入手すると、次のスクリプトを実行できます。URLを自分の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";
}
}