6

में प्रतीक्षा समय/विलंबता को कम/समाप्त करने के लिए कैसे करें मेरे पास एक एएसपी.नेट एमवीसी 3 प्रोजेक्ट है जहां मुख्य एएसपीएक्स पेज jQuery एजेक्स का उपयोग करके अपने हिस्सों के लिए गतिशील लोडिंग कर रहा है। इसलिए मूल रूप से जब साइट लोड होती है, तो यह/होम/इंडेक्स हिट करता है और उसके बाद इंडेक्स (एएसपीएक्स) व्यू के भीतर, jQuery की कई पंक्तियां होती हैं जो पृष्ठ के कुछ हिस्सों को पॉप्युलेट करने के लिए AJAX कॉल (/ होम/पार्टऑन और/होम/पार्टटवो) बनाती हैं।AJAX अनुरोध

इसलिए हर बार पृष्ठ लोड हो तो यह मूल रूप से 3 अनुरोध कर रहा है: क्यों वहाँ के लिए "प्रतीक्षा" समय किसी तरह का है: सूचकांक प्राप्त करने के लिए, PartOne प्राप्त करने के लिए, और फिर PartTwo

सवाल। निष्पादित करने का तीसरा अनुरोध? मैंने सोचा कि यह ब्राउज़र समवर्ती अनुरोध सीमा थी, लेकिन यह पहला अनुरोध करने के बाद क्यों निष्पादित नहीं कर रहा है?

जब मैं प्रयोगात्मक रूप से "आउटपुट कैश" अट्रिब डालता हूं "पार्टटवो" पर ute, यह अपेक्षा के अनुसार व्यवहार करता है, कि यह तेजी से निष्पादित कर रहा था। यह संकेत देता है कि समस्या आईआईएस में नहीं है, लेकिन उसके बाद कहीं और इससे पहले कि यह मेरी क्रिया विधि को हिट करे।

यहां Chrome नेटवर्क प्रोफाइलर से एक स्क्रीन शॉट है: Chrome network profiler

यहाँ MvcMiniProfiler पर एक स्क्रीन शॉट है - 3 पंक्ति/मूल्य को देखो, यह मेरी नियंत्रक की कार्रवाई कोड निष्पादित करने से पहले 500ms के लिए इंतजार कर रहा है। enter image description here

मेरा नियंत्रक कोड इस तरह दिखता है।

public class HomeController : Controller { 
    public ActionResult Index() { 
     // do something here 
     return View(); 
    } 

    public ActionResult PartOne() { 
     // do something here 
     return View(); 
    } 

    public ActionResult PartTwo() { 
     // do something here 
     return View(); 
    } 
} 

मेरे जावास्क्रिप्ट:

$(document).ready(function() { 
    $.ajax({ 
     url: "/Home/PartOne", 
     cache: false, 
     success: function (data, textStatus, request) { 
      $("#TestContainerOne").html(data); 
     } 
    }); 

    $.ajax({ 
     url: "/Home/PartTwo", 
     cache: false, 
     success: function (data, textStatus, request) { 
      $("#TestContainerTwo").html(data); 
     } 
    }); 
}); 

मेरे index.aspx:

हालांकि मैं वास्तविक कोड (कोई लंबी गणना, कोई db कॉल, आदि) कतरना, लेकिन PartTwo के लिए कोड बहुत मामूली बात है
<h2>Home page</h2>  
<div id="TestContainerOne"></div> 
<div id="TestContainerTwo"></div> 

PartOne.ascx:

<h2>Part One</h2> 

PartTwo.ascx:

<h2>Part Two</h2> 

सहायता?

+0

यह समवर्ती अनुरोधों एक ब्राउज़र एक विशिष्ट डोमेन के साथ हो सकता है की संख्या के साथ कुछ हो सकता है। इस प्रश्न का उत्तर देखें: http://stackoverflow.com/questions/561046/how-many-concurrent-ajax-xmlhttprequest-requests-are-allowed-in-popular-browse – Dismissile

+0

मुझे ऐसा नहीं लगता है। क्योंकि केवल 3 अनुरोध हैं, इसलिए सिद्धांत रूप में, उन्हें बैक-टू-बैक निष्पादित किया जाना चाहिए - जो वे हैं। लेकिन सर्वर की तरफ देरी हो रही है। आउटपुट कैश का उपयोग करके प्रयोग के बारे में मेरा नोट देखें - जो बताता है कि यह ब्राउज़र/क्लाइंट सीमा के कारण नहीं है। –

+1

कोशिश करने के लिए चीजें: ए) वेब में डीबग = "झूठी" के साथ रिलीज बिल्ड करें।कॉन्फ़िगरेशन (मुझे लगता है कि मैंने कहीं पढ़ा है कि जब डीबग सत्य होता है तो कुछ चीजें हैं जिन्हें कैश किया जाता है), बी) आईआईएस या आईआईएस एक्सप्रेस पर कोड आज़माएं, क्योंकि मुझे आमतौर पर क्लासिक देव सर्वर कुछ हद तक फ्लेकी लगता है। – Pedro

उत्तर

7

आपको अजाक्स अनुरोधों की समानांतर प्रक्रिया प्राप्त करने के लिए केवल पढ़ने के सत्र का उपयोग करना चाहिए या इसे पूरी तरह से अक्षम करना चाहिए। डिफ़ॉल्ट रूप से सर्वर उसी क्लाइंट से आने वाले अनुरोधों के लिए सत्र स्थिति को लॉक करता है, इसलिए अनुरोध अनुक्रमिक निष्पादित होते हैं।

यह SessionState विशेषता के साथ अपने नियंत्रक सजाने द्वारा किया जाता है:

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)] 
public class HomeController : Controller { 
    public ActionResult Index() { 
     // do something here 
     return View(); 
    } 

    public ActionResult PartOne() { 
     // do something here 
     return View(); 
    } 

    public ActionResult PartTwo() { 
     // do something here 
     return View(); 
    } 
} 
+1

मैंने अपने ब्लॉग में इस समस्या का एक लेखन लिखा: http://setiabud.blogspot.com/2012/03/session-variable-performance.html –

+0

एक और चेहरा-हथेली माइक्रोसॉफ्ट पल –