2009-09-08 20 views
13

मैं वर्तमान में एक एएसपी.NET अनुप्रयोग विकसित कर रहा हूं जो MasterPage का उपयोग करता है और मैं अपने एप्लिकेशन वेबफॉर्म के लोडिंग समय को मापना चाहता हूं और उस जानकारी को क्लाइंट को प्रदर्शित करना चाहता हूं।एएसपी.NET पृष्ठ लोड समय मापें

मेरे वर्तमान रणनीति (मेरी वेबसाइट समाधान के Global.asax फ़ाइल में) Application_BeginRequest घटना जुड़े कॉलबैक का उपयोग कर, समय सर्वर साइड प्रक्रिया पर खर्च की माप शुरू करने के लिए (इस प्रकार)

protected void Application_BeginRequest(Object sender, EventArgs e) { 
    Context.Items.Add("Request_Start_Time", DateTime.Now); 
} 

शामिल और वेबफ़ॉर्म के OnPreRender घटना जुड़े कॉलबैक पर बीता हुआ समय की गणना, एक प्लेसहोल्डर तत्व पर उसे प्रिंट (इस प्रकार)

protected override void OnPreRender(EventArgs e) { 
    base.OnPreRender(e); 

    TimeSpan tsDuration = DateTime.Now.Subtract((DateTime)Context.Items["Request_Start_Time"]); 
    ExecutionTime.InnerHtml = "<em>Server-side processing duration: " + tsDuration.TotalMilliseconds + " miliseconds.</em>"; 
} 

इस का सबसे अच्छा तरीका लोडिंग समय को मापने के लिए है? क्या इसे पूरा करने के लिए एक और "सुरुचिपूर्ण" तरीका है?

आपके समय और सहयोग के लिए अग्रिम धन्यवाद।

उत्तर

7

<% @ पृष्ठ ट्रेस = "true"%> (या web.config में इस सेट)

अनुरेखण सक्षम और trace.axd में जानकारी (अपनी वेबसाइट के रूट में) की जाँच करें।

Trace.Write("Start time intensive task"); 
Trace.Write("Stop time intensive task"); 

http://msdn.microsoft.com/en-us/library/bb386420.aspx

यह मानते हुए है "अपने ग्राहक" गहरी डीबग डेटा हैं:

तो फिर तुम साथ समय अंक निर्धारित कर सकते हैं।

+0

जैसा कि मैंने संदर्भित किया है, मैं एक मास्टर पेज का उपयोग कर रहा हूं और मैं यह नहीं समझ रहा हूं कि इस पर ट्रेस को कैसे सक्षम किया जाए, क्योंकि इसमें "ट्रेस" प्रॉपर्टी नहीं है। क्या आप कृपया इसके साथ मेरी मदद कर सकते हैं? – XpiritO

+0

आपको पृष्ठ पर पृष्ठ पर ट्रेसिंग चालू करने की आवश्यकता नहीं है, बस अपने web.config में करें, और यह सभी पृष्ठों के लिए काम करेगा: http://msdn.microsoft.com/en-us/library/6915t83k.aspx लेकिन उत्पादन के लिए कृपया इस सेटिंग को न रखें! – realMarkusSchmidt

+0

@markus "यह विषय अब तक उपलब्ध नहीं है" @ http://msdn.microsoft.com/en-us/library/6915t83k.aspx – Zack

1

यह वास्तव में उस मीट्रिक पर निर्भर करता है जिसे आप वास्तव में दिखाना चाहते हैं।

  1. क्या यह एक समग्र "पृष्ठ __ सेकेंड में लोड किया गया है" टाइप चीज जो हर समय होगी?
  2. क्या यह निर्धारित करने के लिए है कि आपका कोडित समाधान क्लाइंट के लिए आवश्यकताओं को पूरा करता है, और उत्पादन के लिए आवश्यक नहीं है?

इन दोनों का जवाब यह बताएगा कि रिकॉर्डिंग की बात कब सबसे अधिक समझ में आता है। यदि आपका लक्ष्य # 1 है, तो मैं कहूंगा कि आपकी विधि काम करती है। यदि आप नंबर 2 के लिए जा रहे हैं, तो मैं देख सकता हूं कि इरविन के पास क्या है।

4

आपका ऐपप्रूच काफी सटीक प्रतीत होता है, जब तक आप बहुत बड़े नियंत्रण पेड़ प्रस्तुत नहीं करते हैं और आप सर्वर नियंत्रणों का उपयोग नहीं करते हैं जो उनके सभी काम को ओवरराइड Render विधि में करते हैं (अप्रत्याशित सर्वर नियंत्रण लेखकों को वास्तव में करना पड़ता है उस...)।

उस मामले में, वहाँ वास्तव में वास्तविक प्रतिपादन समय ;-) बस एक HttpResponse.Filter वस्तु का उपयोग बीता हुआ समय के साथ एक प्लेसहोल्डर को भरने के लिए प्रस्तुत करने के लिए एक तरीका है। के बाद इन फ़िल्टरों को लागू किया गया है, वेब फ़ॉर्म प्रस्तुत किया जाता है और इससे पहले कि यह ग्राहक को जाता है।

यदि आपको केवल विकास के लिए इसकी आवश्यकता है, तो trace.axd पर खोजें, इससे आपको न केवल समय के बारे में बहुत कुछ विवरण मिलेगा बल्कि अनुरोध संदर्भ, नियंत्रण वृक्ष संरचना और पृष्ठ आकार भी होगा।

संबंधित मुद्दे