Tantangan Web Hosting
Anda harus ingat bahwa tidak ada opsi konfigurasi mesin yang tersedia jika Anda di-host di server bersama karena banyak dari kita (perusahaan kecil dan individu).
ASP.NET MVC Overhead
Situs saya membutuhkan setidaknya 30 detik ketika belum mencapai lebih dari 20 menit (dan aplikasi web telah dihentikan). Mengerikan sekali.
Cara Lain untuk Menguji Kinerja
Ada cara lain untuk menguji apakah itu ASP.NET MVC Anda memulai atau sesuatu yang lain. Jatuhkan halaman HTML normal di situs Anda tempat Anda dapat menekannya secara langsung.
Jika masalah terkait dengan ASP.NET MVC mulai, maka halaman HTML akan segera render bahkan ketika aplikasi web belum dimulai.
Begitulah cara saya pertama kali menyadari bahwa masalahnya ada di startup ASP.NET MVC. Saya memuat halaman HTML kapan saja dan itu akan memuat dengan sangat cepat. Kemudian, setelah mencapai halaman HTML itu, saya menekan salah satu URL ASP.NET MVC saya dan saya akan mendapatkan pesan Chrome "Menunggu raddev.us ..."
Tes Lain Dengan Script Bermanfaat
Setelah itu saya menulis skrip LINQPad (lihat http://linqpad.net untuk lebih lanjut) yang akan mengenai situs web saya setiap 8 menit (kurang dari waktu aplikasi diturunkan - yang seharusnya 20 menit) dan saya membiarkan itu berjalan berjam-jam.
Saat skrip berjalan, saya membuka situs web saya dan setiap kali situs saya muncul dengan sangat cepat. Ini memberi saya ide yang baik bahwa kemungkinan besar kelambatan yang saya alami adalah karena waktu startup ASP.NET MVC.
Dapatkan LinqPad dan Anda dapat menjalankan skrip berikut - cukup ubah URL ke milik Anda dan biarkan berjalan dan Anda dapat mengujinya dengan mudah. Semoga berhasil.
CATATAN : Di LinqPad Anda harus menekan F4 dan menambahkan referensi ke System.Net untuk menambahkan perpustakaan yang akan mengambil halaman Anda.
JUGA : pastikan Anda mengubah variabel String URL untuk menunjuk pada URL yang akan memuat rute dari situs ASP.NET MVC Anda sehingga mesin akan berjalan.
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";
}
}