वेब होस्टिंग चुनौती
आपको यह याद रखना होगा कि यदि आप किसी साझा सर्वर पर होस्ट किए गए हैं तो मशीन कॉन्फ़िगरेशन विकल्पों में से कोई भी उपलब्ध नहीं है, क्योंकि हम में से कई (छोटी कंपनियां और व्यक्ति) हैं।
ASP.NET MVC ओवरहेड
मेरी साइट को कम से कम 30 सेकंड का समय लगता है जब इसे 20 मिनट से अधिक नहीं मारा गया है (और वेब ऐप बंद कर दिया गया है)। यह भयानक है।
टेस्ट प्रदर्शन का दूसरा तरीका
यह परीक्षण करने का एक और तरीका है कि यह आपका ASP.NET MVC स्टार्ट अप है या कुछ और। अपनी साइट पर एक सामान्य HTML पेज ड्रॉप करें जहां आप इसे सीधे हिट कर सकते हैं।
यदि यह समस्या ASP.NET MVC से संबंधित है तो वेब पेज शुरू नहीं होने पर भी HTML पेज लगभग तुरंत ही रेंडर हो जाएगा।
इस तरह मैंने पहली बार पहचाना कि समस्या ASP.NET MVC स्टार्टअप में थी। मैंने किसी भी समय एक HTML पृष्ठ लोड किया है और यह तेज़ी से धधक रहा होगा। फिर, उस HTML पेज को हिट करने के बाद, मैं अपने ASP.NET MVC URL में से एक को हिट करूँगा और मुझे क्रोम संदेश "रेडदेव के लिए प्रतीक्षा कर रहा है।" ...
सहायक स्क्रिप्ट के साथ एक और टेस्ट
उसके बाद मैंने एक LINQPad ( अधिक जानकारी के लिए http://linqpad.net देखें ) स्क्रिप्ट लिखी जो हर 8 मिनट में मेरी वेब साइट को हिट करती है (ऐप को अनलोड करने के लिए समय से कम - जो 20 मिनट होनी चाहिए) और मैंने जाने दिया यह घंटों तक चलता है।
जब स्क्रिप्ट चल रही थी तो मैंने अपनी वेब साइट को हिट किया और हर बार मेरी साइट तेजी से ऊपर आ गई। यह मुझे एक अच्छा विचार देता है कि सबसे अधिक संभावना मैं जो मंदी का अनुभव कर रहा था वह ASP.NET MVC स्टार्टअप समय के कारण था।
LinqPad प्राप्त करें और आप निम्न स्क्रिप्ट चला सकते हैं - बस URL को अपने आप से बदल दें और इसे चलने दें और आप इसे आसानी से जांच सकते हैं। सौभाग्य।
नोट : LinqPad में आपको लाइब्रेरी को जोड़ने के लिए F4 को प्रेस करना होगा और System.Net पर एक संदर्भ जोड़ना होगा जो आपके पृष्ठ को पुनः प्राप्त करेगा।
ALSO : सुनिश्चित करें कि आप स्ट्रिंग 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";
}
}