मेरे पास एक साधारण सरल ASP.MVC व्यू के साथ एक प्रदर्शन समस्या है।किसी पृष्ठ पर Url.Action पर पहला कॉल धीमा है
यह एक लॉग-ऑन पेज है जो लगभग तुरंत होना चाहिए, लेकिन इसमें लगभग आधा सेकंड लग रहा है।
बहुत खुदाई के बाद ऐसा लगता है कि समस्या पहली बार Url.Action
पर कॉल करती है - यह लगभग 450ms (MiniProfiler के अनुसार) ले रही है लेकिन यह बहुत धीमी लगती है।
Url.Action
पर आने वाली कॉल < 1ms ले रही हैं, जो कि मैं अपेक्षा करता हूं उससे अधिक है।
यह लगातार है कि मैं Url.Action("action", "controller")
या Url.Action("action")
का उपयोग करता हूं, लेकिन ऐसा नहीं लगता है कि अगर मैं Url.Content("~/controller/action")
का उपयोग करता हूं। यह तब होता है जब मैं Html.BeginForm("action")
पर कॉल करता हूं।
क्या किसी को यह पता है कि इसका क्या कारण है?
एक खुदाई source में पता चलता है कि RouteCollection.GetVirtualPath
अपराधी हो सकता है, के रूप में है कि Url.Action
और Html.BeginForm
दोनों आम है। हालांकि, निश्चित रूप से इस जगह पर इस्तेमाल किया जाता है? मेरा मतलब है, ½ एक सेकंड बहुत धीमी है।
मेरे पास 20 या तो कस्टम मार्ग हैं (यह कुछ विरासत वेबफॉर्म पृष्ठों के साथ काफी बड़ा ऐप है) लेकिन फिर भी समय बहुत धीमा प्रतीत होता है।
कोई विचार इसे ठीक करने के लिए कैसे करें?
यह दृश्यों को पूर्ववत नहीं करता है, जो कि निर्माण के बाद उन्हें संकलित करता है ताकि आपको रन टाइम त्रुटियों के बजाय बिल्ड त्रुटियां मिलें। इसके अलावा इससे कोई फर्क नहीं पड़ता - मैं अभी भी पहले 'Url.Action' कॉल पर 450ms या तो देख रहा हूं। – Keith
ASPNet_Compiler.exe के साथ उचित प्रीकंपिलेशन संभव है (http://msdn.microsoft.com/en-us/library/ms229863(v=vs.80).aspx देखें) लेकिन इसके बिना भी समय मैं ' यूआरएल।एक्शन 'पागल हैं - यह लगभग हर बार पृष्ठ चलने पर नियंत्रक कार्यों को खोजने के लिए पूर्ण प्रतिबिंब कर रहा है। – Keith
क्या आप अपने रजिस्टर रूट्स (global.asax से) दिखा सकते हैं? यह आपके समय पर लाभ उठा सकता है। –