2012-04-11 20 views
7

मैंने एएसपी.NET वेबफॉर्म पेज पर स्टैक एक्सचेंज मिनीप्रोफाइलर लागू किया है जो पहले से ही jQuery के v1.7.1 का संदर्भ देता है। jQuery फ़ाइल स्थानीय रूप से होस्ट किया गया है, इसलिए मेरे masterfile इस तरह दिखता है:MiniProfiler लोड jquery-1.7.1 क्यों करता है भले ही मैं इसे पहले ही पृष्ठ पर लोड कर चुका हूं?

<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script> 
<%= MiniProfiler.RenderIncludes() %> 

हालांकि, जब मैं उत्पन्न उत्पादन का स्रोत देख सकते हैं, मैं इस

<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script> 
<script type="text/javascript">  
    ... 
    load('/app/mini-profiler-resources/jquery.1.7.1.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA=', initMp); 
</script> 

को कुछ इसी तरह देव में देख रहे हैं मिलता है टूल्स नेटवर्क टैब, मैं देख सकता हूं कि यह दो अनुरोधों को डाल रहा है, Scripts/jquery-1.7.1.min.js और /app/mini-profiler-resources/jquery.1.7.1.js

क्या यह एक काफी बड़ा रिडंडेंसी मुद्दा नहीं है? मैं मिनीप्रोफाइलर को jQuery लाइब्रेरी की दूसरी प्रतिलिपि का अनुरोध, डाउनलोड और विश्लेषण करने से कैसे रोकूं?

उत्तर

10

कारण है कि हम noConflict में jQuery लोड कर रहे हैं है। यह jQuery संस्करणों को संघर्ष करने का जोखिम समाप्त करता है। उदाहरण के लिए, हमें यकीन नहीं है कि अगर jQuery संस्करण 1.0 पृष्ठ पर है तो MiniProfiler अभी भी काम करेगा। किसी भी जोखिम से बचने के लिए, हम अपना खुद का संस्करण लोड करते हैं।

अब, मैं पुल अनुरोध के लिए खुला हूं जो अनुरोध करने से पहले jQuery पर एक संस्करण जांच करता है, अगर "दाएं" संस्करण है तो हम केवल jQueryMP से jQuery पर उपनाम कर सकते हैं। हालांकि, यह कोड को जटिल करता है और केवल jQuery के एक संस्करण के लिए समस्या हल करता है।

+2

धन्यवाद। JQuery के लोडिंग का चयन करने के लिए 'RenderIncludes() 'विधि में डिफ़ॉल्ट' bool = true' तर्क सहित डिफ़ॉल्ट होगा? वे उपयोगकर्ता जो तब जानते थे कि वे पृष्ठ पर कहीं और सही संस्करण लोड कर रहे थे, फिर 'रेंडर इनकॉर्सेस (झूठी)' कह सकते हैं। अगर आपको लगता है कि यह एक व्यवहार्य दृष्टिकोण है तो लेगवर्क करने में प्रसन्नता हो। – growse

+3

पैच के लिए ठीक है, शायद रेंडर शामिल है (useExistingjQuery: true) - यह बदले में 'jQueryMP = jQuery' उत्पन्न कर सकता है, इसे –

+1

लोड करने के बजाय, नवीनतम संस्करण में, यह करें: StackExchange.Profiling.MiniProfiler.Settings.UseExistingjQuery = true; – pbz

0

क्योंकि उनके पास अलग-अलग यूआरएल हैं, वे ब्राउज़र के लिए अलग-अलग संसाधन हैं। हो सकता है कि आपको केवल उस प्रथम स्क्रिप्ट की आवश्यकता न हो जिसे आपने जोड़ा था।

या इस हैक की कोशिश:

<script src="/app/mini-profiler-resources/jquery.1.7.1.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA="></script> 
+0

मैं नहीं पूछ रहा हूं कि ब्राउज़र दोनों स्क्रिप्ट क्यों लोड कर रहा है, मैं पूछ रहा हूं कि मिनीप्रोफाइलर से ऑटो-जेनरेट कोड क्यों एक स्क्रिप्ट लोड करने का निर्णय ले रहा है जो पहले ही लोड हो चुका है, और मैं इसे कैसे बंद कर सकता हूं। – growse

+0

मेरी दूसरी वाक्य पढ़ें: हटाएं: Gavriel

+1

और तब jQuery पर भरोसा करने वाली स्क्रिप्ट्स निष्पादित नहीं होंगी यदि MiniProfiler isn प्रस्तुत नहीं किया? स्पष्टीकरण के लिए – growse

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

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