2008-11-24 20 views
10

हम एएससीएक्स नियंत्रण वाले बहुत से द्विपक्षीय रूप से बनाए गए पृष्ठों के साथ बड़े एएसपी.NET अनुप्रयोगों का विकास कर रहे हैं। हम हर जगह बहुत सारे jQuery का उपयोग करते हैं।jQuery: जावास्क्रिप्ट को पृष्ठ के नीचे ले जाएं?

मैं पढ़ रहा हूं कि पृष्ठ के निचले हिस्से में इनलाइन जावास्क्रिप्ट कोड को स्थानांतरित करने के लिए यह समझदारी होगी क्योंकि पृष्ठ को लोड करने में देरी हो सकती है जब इसे "बहुत जल्दी" शामिल किया जाता है।

मेरा प्रश्न अब है: क्या यह अभी भी jQuery के साथ काम करते समय समझ में आता है?

अधिकांश कोड तैयार हैंडलर में निष्पादित किया जाता है, इसलिए मुझे उम्मीद है कि पृष्ठ की लोडिंग धीमी नहीं होगी। मेरे मामले में एकाधिक उपयोगकर्ता नियंत्रण एएससीएक्स के पास अपने सभी jQuery बिट्स और टुकड़े हैं, और इसे प्रस्तुत पृष्ठ में सभी को स्थानांतरित करना आसान नहीं होगा।

+0

किसी भी कारण है कि अपने तैयार कॉल नहीं कर रहे बाहरी फाइल में भी नहीं है? यह कॉल इनलाइन होने से कहीं अधिक प्रबंधनीय है। –

+0

क्या आप कुछ और जवाब में देखने की उम्मीद कर रहे थे? ऐसा लगता है कि थ्रेड लटकने के लिए शर्म की तरह लगता है ... :-) –

+0

मुझे यह पता चल गया कि जब मैं यह धागा पाया था तो पृष्ठ के निचले हिस्से में जेएस संदर्भों को रखने के लिए ASP.NET ScriptManager को कैसे प्राप्त किया जाए। ऐसा लगता है जैसे आप चाहते हैं कि आपके पास ऐसा कोड है जो इसका उपयोग करता है। –

उत्तर

10

आप पेज लोडिंग को प्रभावित करने के तरीके को देखने के लिए Cuzillion में जावास्क्रिप्ट को ऑर्डर करने के विभिन्न तरीकों का मॉडल कर सकते हैं।

पृष्ठ तत्वों के क्रम को गति को प्रभावित करने के उदाहरणों के उदाहरण के लिए examples और this blog post देखें।

-2

अधिकांश समय, पृष्ठ के निचले हिस्से में अपनी जावास्क्रिप्ट को स्थानांतरित करने का कारण यह सुनिश्चित करना है कि जावास्क्रिप्ट चलाने से पहले जावास्क्रिप्ट का संदर्भ देने वाले किसी भी DOM तत्वों को बनाया जा सके। यह भी सुनिश्चित करता है कि पृष्ठ में किसी भी जावास्क्रिप्ट को चलाने से पहले प्रस्तुत करने का समय है।

इस मामले में, मैं पृष्ठ पर जावास्क्रिप्ट को नीचे ले जाने के बारे में चिंता नहीं करता।

+1

यह सच नहीं है। इसे नीचे रखने का कारण यह है कि पृष्ठ सामग्री पहले लोड हो सकती है, और आप 200kb स्क्रिप्ट डाउनलोड करते समय उपयोगकर्ता को रिक्त स्क्रीन पर नहीं देख रहे हैं। – nickf

+0

स्कॉट, यह सबसे स्पष्ट (और इसलिए सबसे आम) कारण है - सत्य। हालांकि, जैसा कि पोस्टर बताता है, दस्तावेज़ की उपलब्धि। पहले से ही हैंडलर इसे एक गैर-मुद्दा बनाते हैं। पृष्ठ लोड प्रदर्शन समस्या क्या बनी हुई है। निकफ पूरी तरह से सही है। –

+0

आप पृष्ठ से पहले डीओएम को किसी भी तरह (सुरक्षित) में हेरफेर नहीं कर सकते हैं ऑनलोड को निकाल दिया गया है क्योंकि यह कुछ ब्राउज़रों में अपवादों को ट्रिगर करेगा ... तो यह एक पूरी तरह से झूठा बयान है ... (क्षमा करें, -1, मेरा पहला ...) –

15

एचटीएमएल में देर से स्क्रिप्ट रखने की सिफारिश की जाती है क्योंकि स्क्रिप्ट लोड करना और निष्पादित करना अनुक्रमिक रूप से होता है (एक समय में एक स्क्रिप्ट) और इस बीच छवियों और सीएसएस फ़ाइलों के लोडिंग और पार्सिंग को पूरी तरह अवरुद्ध करता है।

पृष्ठ के शीर्ष के पास बड़ी/लगी हुई/धीमी गति से चलने वाली स्क्रिप्ट पृष्ठ सामग्री/लेआउट के लोडिंग और प्रतिपादन में अनावश्यक देरी कर सकती हैं।

स्क्रिप्ट का आकार (डाउनलोड समय) और जटिलता (निष्पादन समय (डोम ट्रैवर्सल, आदि)) कारक - लेकिन अधिक महत्वपूर्ण बात यह है कि व्यक्तिगत <script> HTTP अनुरोधों की संख्या बहुत अधिक मायने रखती है (कम अनुरोध बेहतर है)।

"document.ready" हैंडलर का उपयोग धीमा निष्पादन के कारण देरी को कम करता है - लेकिन फिर भी अनुक्रमिक HTTP ओवरहेड की समस्या को छोड़ देता है।

अनुशंसित पढ़ने: High Performance Web Sites नाट कोक्ले द्वारा।

+0

याद रखें कि समांतरता सामान्य रूप से अच्छी होती है। लिपियों को HTML और CSS और छवियों के समान सर्वर पर जरूरी नहीं है। साथ ही, यदि ब्राउज़र को लगता है कि ट्यूबों को पकड़ा गया है, तो यह स्क्रिप्ट का अनुरोध नहीं कर सकता है। जितनी जल्दी ब्राउज़र में स्क्रिप्ट की जानकारी होती है, उतनी तेज़ी से यह कतार/थ्रेड कर सकती है। – strager

+3

लिपियों अन्य वस्तुओं की लोडिंग ब्लॉक - चाहे वे किस सर्वर पर झूठ बोलते हैं। प्रदर्शन साहित्य पढ़ें। मैं मतदान के लिए ऑब्जेक्ट, बीटीडब्ल्यू। –

+0

@strager: "यदि ब्राउज़र को लगता है कि ट्यूबों को पकड़ा गया है, तो यह स्क्रिप्ट का अनुरोध नहीं कर सकता है।" विस्तृत करने के लिए परवाह? मैंने कभी भी किसी भी ब्राउज़र में यह सुविधा नहीं देखी है। (यह पृष्ठ को पार्स करने के लिए ब्राउज़र पर निर्भर है और डाउनलोड करने के लिए अतिरिक्त संसाधनों (छवियों, शैलियों, स्क्रिप्ट) की एक सूची बनाएं। यह __NOT__ ब्राउज़र पर निर्भर है कि "ओह, मैं बस * डाउनलोड * महसूस नहीं करता * कि * "।) – Piskvor

1

जब आप जेएस शामिल करते हैं तो उस बिंदु से पृष्ठ की लोडिंग स्थगित हो जाएगी क्योंकि जेएस फ़ाइल में "document.write" कथन हो सकता है।

इसका मतलब है कि पूरा पृष्ठ उस बिंदु से प्रस्तुत किया जा रहा है जहां आप अपनी जेएस फाइलें शामिल करते हैं और ब्राउज़र को "सफेद" या कुछ (कम से कम शेष पृष्ठ प्रदर्शित नहीं करते) बनाते हैं, इसलिए संक्षिप्त उत्तर है निश्चित रूप से हाँ ...! (और यह भी इनलाइन जेएस - जो आप BTW उपयोग नहीं करना चाहिए)

कदम के रूप में जे एस के शामिल किए जाने (लंबे समय तक जवाब "शायद" 99% संभावना के साथ है) नीचे करने के लिए ...

जब यदि आप ASP.NET पर हैं तो आप jQuery उपयोग नहीं करना चाहिए बल्कि Ra-Ajax BTW इन सभी "सर्वोत्तम प्रथाओं" पूर्ण रूप से अपने आप के लिए शामिल किया है जिसमें कहा गया है कि ...

+0

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

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