क्या मुख्य अनुभाग के रूप में जावास्क्रिप्ट को मुख्य अनुभाग से संदर्भित किया जाना चाहिए?


12

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

लेकिन Google यहां कहता है: कुकलेस डोमेन से जल्दी भरी हुई बाहरी जेएस फाइलों की सेवा न करें

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

इसलिए अब मैं विवादित हूं। मुझे स्पष्ट नहीं है कि "पेज स्टार्टअप के लिए क्या आवश्यक है" का अर्थ है।

मेरे पास आमतौर पर दो जावास्क्रिप्ट संदर्भ हैं, JQuery ने ajax.googleapis.com और एक मास्टर.जेएस फ़ाइल से सेवा दी है जिसमें ज्यादातर $ (दस्तावेज़) में इवेंट हैंडलर शामिल हैं। (पहले से ही) फ़ंक्शन। क्या यह पेज स्टार्टअप के लिए आवश्यक है?

उपलब्ध विकल्पों को देखते हुए, (ajax.googleapis.com, static cookieless domain, original hostname) मेरे जावास्क्रिप्ट को कहां परोसना चाहिए?

जवाबों:


5

इसलिए अब मैं विवादित हूं। मुझे स्पष्ट नहीं है कि "पेज स्टार्टअप के लिए क्या आवश्यक है" का अर्थ है।

यह बहुत कुछ इस बात पर निर्भर करता है कि आपकी साइट कैसे कार्य करती है। मूल रूप से, यह जावास्क्रिप्ट है जिसे वेब पेज का उपयोग करने से पहले किसी को चलाने की आवश्यकता होती है।

एक उदाहरण के रूप में, यदि आप http://www.weather.com/ पर जाते हैं, तो आप देख सकते हैं कि मौसम की खोज के लिए संकेत देने के लिए कुछ लोगों ने कुछ जावास्क्रिप्ट जादू का उपयोग करने का निर्णय लिया। यानी Enter Zip, City or Place (e.g. Disney World)टेक्स्ट इनपुट फ़ील्ड में शब्द दिखाई देते हैं। जब पृष्ठ लोड हो रहा हो, तो दुर्भाग्य से, कम से कम मेरे अंत में है। इसलिए, यदि पृष्ठ लोड करने के लिए काफी धीमा है और आप जावास्क्रिप्ट के निष्पादित होने से पहले पाठ इनपुट में लिखना शुरू करने के लिए पर्याप्त तेज़ हैं - जो कि खिंचाव नहीं है - तो आपके इनपुट को जावास्क्रिप्ट के द्वारा खराब किया जा सकता है जो नेत्रहीन रूप से संकेत देता है इनपुट बॉक्स में पाठ।

दी, यह पहले पाठ बॉक्स में उपयोगकर्ता इनपुट के लिए जाँच करके या बस इस anachronistic तकनीक पर देने से बचा जा सकता है। हालाँकि, तब यह बहुत अच्छे उदाहरण के रूप में काम नहीं करेगा।

उपलब्ध विकल्पों को देखते हुए, (ajax.googleapis.com, static cookieless domain, original hostname) मेरे जावास्क्रिप्ट को कहां परोसना चाहिए?

यह वास्तव में आपके जावास्क्रिप्ट क्या करता है यह जानने के बिना उत्तर नहीं दिया जा सकता है। इसके अलावा, bpeterson76 दृष्टिकोण के रूप में, यह आपकी साइट की विशिष्ट स्थिति पर निर्भर करता है। यानी पेज कितना बड़ा है? आपकी मेजबानी की मांग कितनी अच्छी है? कितनी सीएसएस फ़ाइलें, चित्र, आदि यह लोड करता है? यह कितने बाहरी संसाधन है?

आपकी विशिष्ट स्थिति के आधार पर, यह समयपूर्व अनुकूलन हो सकता है।


4

आम तौर पर आपके पेज पर लागू होने से पहले "कुछ भी करना होगा, पेज एक ही सर्वर से होना चाहिए"सर्वर या अन्य छोटे संसाधन - ऐसी स्थितियाँ जो DNS लुकअप में एक सेकंड का ध्यान देने योग्य अंश ले सकती हैं (जो कि आपकी वस्तुओं के कई डोमेन के आसपास बिखरे होने पर जल्दी जुड़ सकती हैं)। Google के jQuery और अन्य पुस्तकालयों जैसे सामान्य सार्वजनिक संसाधनों के साथ, आपके आगंतुक के ब्राउज़र में पहले से ही एक अच्छा मौका है कि डीएनएस लुकअप आज (क्योंकि अन्य साइटें उस सेवा से सामग्री को संदर्भित कर रही हैं) और संभवत: कैश में फ़ाइल भी नहीं है स्थानांतरण की आवश्यकता है (या यदि कोई अनुरोध किया जाता है तो यह केवल एक छोटी "304 - संशोधित नहीं" प्रतिक्रिया हो सकती है)। भले ही ऑब्जेक्ट के लिए एक पूर्ण डाउनलोड की आवश्यकता हो, लेकिन Google का सामग्री वितरण नेटवर्क आपके छोटे पैमाने पर संचालन की तुलना में अधिकांश उपयोगकर्ताओं के लिए तेज़ होगा।

एक संबंधित नियम: वे ऑब्जेक्ट जो पृष्ठ के सही कार्य के लिए आवश्यक नहीं हैं (जैसा कि उपयोगकर्ता इसे देखता है) को मुख्य HTTP प्रतिक्रिया में यथासंभव देर से भेजा जाना चाहिए। उदाहरण के लिए, विज्ञापन / सांख्यिकी सेवाओं (यानी Google Analytics और इसके ilk) के लिए आवश्यक स्क्रिप्ट जैसी चीजें - उपयोगकर्ता को जितनी जल्दी हो सके अपनी सामग्री दें, फिर पृष्ठभूमि सामग्री को लोड करें जो केवल वास्तव में आपकी रुचि रखता है। मैंने कुछ विज्ञापनों / आँकड़े सेवाओं को अवरुद्ध किया है (मेरी मेजबानों की फ़ाइल में उन्हें 127.0.0.1 पर मैप करके) क्योंकि वे अक्सर बहुत धीमी होती हैं और साइटें जो उन्हें जल्दी संदर्भित करती हैं, बस मुझे एक खाली पृष्ठ देती हैं, जबकि स्क्रिप्ट इसके बजाय प्रतीक्षा कर रही हैं उन्हें देर से संदर्भित करने के लिए इसलिए मैं उस सामग्री को पढ़ सकता हूं जिसके लिए मैं हूं, जबकि पृष्ठभूमि में अन्य सामान ट्रंडल्स हैं।

स्थिर सामग्री के लिए कुकी-कम डोमेन की उपयोगिता पैमाने की बात है। यदि आपके पास कुकीज में एक 10-बाइट सेशन आईडी है और प्रति दिन दस हजार आगंतुक अनुरोध करते हैं, तो प्रति विज़िट 20 स्थिर वस्तुएं आप केवल ~ 118Mbyte बैंडविड्थ प्रति माह (20 * 20 * 10000 * 31/1024/1024) बचा रहे हैं। यदि दूसरी ओर आपकी साइट कुकीज़ में एक या दो किबिट्स के सामान को रखती है तो अंतर और अधिक महत्वपूर्ण हो सकता है, खासकर यदि आपका कोई भी उपयोगकर्ता धीमे कनेक्शन (यानी जीपीआरएस के माध्यम से मोबाइल, या एक से अधिक के माध्यम से साइट तक पहुंचता है) ) (एक उच्च हस्तक्षेप क्षेत्र में वाईफ़ाई लिंक) या यदि आप प्रति दिन लाखों विज़िट प्राप्त करते हैं।

सारांशित करने के लिए, उन लिपियों के लिए, जिन्हें पृष्ठ से पहले लोड किया जाना चाहिए, मेरी प्राथमिकताएँ प्रस्तुत कर सकती हैं:

  1. ajax.googleapis.com, या समान
  2. कॉलिंग पृष्ठ का मूल होस्टनाम
  3. स्थिर कुकी-कम डोमेन

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


With common public resources ... there is a good chance that your visitor's browser has already done that DNS lookup today निजी तौर पर, मैं अपनी साइट के लिए इस पर भरोसा करना आसान नहीं समझूंगा । मैं चाहता हूं कि यह यथासंभव अधिक से अधिक परिस्थितियों में तेजी से संभव हो। बावजूद, आप अच्छे अंक बनाते हैं। +1
जॉर्ज मैरियन

1

Google पूरी दुनिया में वितरित एक विशाल सामग्री नेटवर्क चलाता है जो किसी भी एकल सर्वर की तुलना में सामग्री को उपयोगकर्ता के करीब रखता है जिसे आप संभवतः चला रहे हैं (लगता है कि अकामी, लेकिन Google के स्वामित्व में है) इसलिए, गति के दृष्टिकोण से, यह कारण है कि Google आपके फ़ाइल को आपके स्थानीय सर्वर की तुलना में तेज़ी से उपयोगकर्ता को प्राप्त करने जा रहा है ... जब तक कि वे आपके व्यक्तिगत सर्वर से बहुत निकटता में न हों।

यह सवाल स्टैकओवरफ्लो पर और उसके आसपास चला गया है, और उपरोक्त उत्तर हमेशा सर्वसम्मति से प्रतीत होता है। लेकिन एक यथार्थवादी दृष्टिकोण से, एक बनाम दूसरे पर होस्टिंग द्वारा किए गए लाभ लंबे समय में काफी कम होने जा रहे हैं। आपको न्यूनतम http अनुरोधों को छोटा करने, ऑप्टिमाइज़ करने और समग्र HTTP अनुरोधों को कम करने से बेहतर लाभ मिलेगा, जहाँ आप भौतिक रूप से स्थित हैं। जिन स्थितियों में यह बात शुरू होती है (मैंने एक काम किया था जहां एक पृष्ठ 1.5+ मिलियन बार / दिन लोड कर रहा था, इसलिए 5k सुधार का मतलब बैंडविड्थ की बचत में 5 गिग्स था) आमतौर पर निर्णय निर्माताओं की एक टीम होती है जिन्हें इन निर्णयों की जांच करने का काम सौंपा जाता है।

व्यक्तिगत रूप से, मैं आमतौर पर Google पर एकमात्र कारण के लिए होस्ट करता हूं कि वे मुझे जो खोज रहे हैं उसकी सबसे अद्यतित प्रति मुझे देने जा रहे हैं।


आप अपने कस्टम जावास्क्रिप्ट को कहाँ होस्ट करते हैं? स्टैटिक कुकलेस डोमेन या मूल होस्टनाम?
जेम्स लॉरुक

ईमानदारी से, (ज्यादातर) Jquery इन-लाइन के बाहर, वास्तव में बहुत कुछ नहीं है जो गतिशील रूप से जुड़ा नहीं हो सकता है। मैं डेटाटैब प्लग के संभावित अपवाद के साथ (मुख्य रूप से) कोर Jquery और Jquery UI का उपयोग करके वूडू को न्यूनतम रखने के लिए हूं। मैं इसे सरल (बेवकूफ) बनाए रखने की अवधारणा में बहुत बड़ा विश्वास रखता हूं और अगर यह पीछे की ओर संगत नहीं है, तो कोड नहीं डालेगा, जो बहुत सारे विकल्पों को नियंत्रित करता है। जैसा कि मैंने ऊपर कहा, एक फाइल को नॉन-कुकलेस डोमेन पर रखना एक बड़ी बात नहीं है।
४३ पर bpeterson76

1

याद रखने वाली एक महत्वपूर्ण बात यह है कि ब्राउज़र में सीमा होती है कि एक ही डोमेन से कितने संसाधन एक साथ डाउनलोड होंगे, आमतौर पर ब्राउज़र के आधार पर 2 और 6 के बीच। एक अलग डोमेन का उपयोग करने से ब्राउज़र आपके डोमेन से एक साथ अधिक चीजें डाउनलोड कर सकता है।

तो सबसे अच्छा उपाय है कि ajax.googleapis.com जैसे लोकप्रिय सीडीएन का उपयोग किया जाए क्योंकि इस तरह से कोई कुकीज़ नहीं हैं। उपयोगकर्ता ने पहले ही DNS लुकअप कर लिया है और संसाधन को कैश भी कर सकता है। सीडीएन की गति के लिए अनुकूलित किया गया है और संभवतः आपके उपयोगकर्ता के पास एक सर्वर है।

यदि CDN कोई विकल्प नहीं है, तो यदि आपके पास बहुत सारी कुकीज़ हैं या आपके पास (चित्र आदि) डाउनलोड करने के लिए बहुत सारे संसाधन हैं, तो कुकी मुक्त डोमेन का उपयोग करें (केवल वैसे भी DNS लुकअप करने की आवश्यकता है)।

यदि आपके पास कुछ संसाधन (बस एक कस्टम जावास्क्रिप्ट फ़ाइल) और कुछ कुकीज़ (बस एक छोटा सत्र आईडी) एक ही डोमेन से होस्ट करते हैं।

अच्छे संसाधन:

http://www.phpied.com/free-falling-waterfalls/

http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/

http://developer.yahoo.com/performance/rules.html


1

यद्यपि ऊपर दिए गए उत्तरों ने आपके अधिकांश प्रश्न को विच्छेदित कर दिया है, मैं "पेज स्टार्टअप के लिए आवश्यक" पर योगदान दूंगा। मैं इसका अनुवाद करता हूं: क्या यह स्क्रिप्ट वेबसाइट का उपयोग करने के लिए आवश्यक है? अनुभव से, आमतौर पर जवाब नहीं है। हालांकि, ऐसे मामले जब मैं करूंगा:

  • प्रपत्र सत्यापन
  • एक जावास्क्रिप्ट-आधारित नेविगेशन (वैसे भी आदर्श नहीं)
  • यदि लेआउट जावास्क्रिप्ट पर निर्भर करता है
  • यदि जावास्क्रिप्ट, या एक पुस्तकालय (जैसे jQuery) डोम संशोधनों के लिए उपयोग किया जाता है जो महत्वपूर्ण हैं

और संदर्भ के लिए याहू के YSlow प्रदर्शन दिशानिर्देश

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.