2010-09-07 16 views
10

ठीक है, इसलिए मुझे पता है कि जावास्क्रिप्ट को सभी उद्देश्यों को दक्षता उद्देश्यों के लिए एक बाहरी फ़ाइल में जोड़ना स्पष्ट है, लेकिन यह यहां काफी सवाल नहीं है।जावास्क्रिप्ट - गठबंधन करने या गठबंधन करने के लिए, यह प्रश्न

कहें कि मेरे पास एक खोज क्षेत्र के साथ Default.htm है जिसमें थोड़ा जावास्क्रिप्ट जादू संलग्न है। तब मेरे पास एक संपर्क फ़ॉर्म के साथ Contact.htm है जिसमें कुछ जावास्क्रिप्ट जादू संलग्न है। और आखिर में मेरे पास कुछ jQuery पैनलों के साथ एक FAQ.htm है जो जवाब दिखा रहा है ... आपको तस्वीर मिलती है।

असल में मेरे पास तीन पृष्ठ हैं जिनमें सभी के पास "कुछ" जावास्क्रिप्ट की आवश्यकता है, लेकिन किसी भी अन्य पृष्ठों पर जावास्क्रिप्ट का उपयोग नहीं किया जाता है।

क्या यह सभी जावास्क्रिप्ट को एक बड़ी मिनीफाइड फ़ाइल में जोड़ना बेहतर है जो एक बार लोड होता है और फिर कैश में संग्रहीत होता है, या डिफ़ॉल्ट पृष्ठ पर किसी व्यक्तिगत जावास्क्रिप्ट फ़ाइल का उपयोग करना बेहतर होता है, लेकिन संपर्क पर इसका उपयोग नहीं करना बेहतर है पेज ... आदि?

इस परिदृश्य में सबसे अच्छा क्या काम करता है?

विकल्प: 1

Default.htm
jquery.js
default.js

Contact.htm
jquery.js
contact.js

Faq.htm
jquery.js
faq.js

विकल्प: 2

Default.htm
jQuery-default-संपर्क-faq-min.js

संपर्क.htm
jquery-default- संपर्क-faq-min.js

Faq.htm
jQuery-default-संपर्क-faq-min.js

पुनश्च: सभी तुम लोगों ASP.NET के लिए, मैं उपयोग कर रहा हूँ मेरे जावास्क्रिप्ट फाइलों को जोड़ना, छोटा करना और संस्करण बनाना,

+0

आप शायद एक और जावास्क्रिप्ट फ़ाइल (ताकि 3 एक स्नातकोत्तर पर) के लिए शुरू कर दिया तो मैं भी विकल्प 1. साथ जाना होगा तो मैं शुरू हो सकता है उदाहरण के लिए इसे संयोजित करने की सोच। मैं अभी भी उन सभी को कम कर दूंगा लेकिन उन्हें गठबंधन नहीं करूंगा। हालांकि, मैं jquery फ़ाइल को मास्टर पेज में डाल दूंगा। इस तरह आपको केवल इसके संदर्भ के बारे में चिंता करनी होगी। – chobo2

उत्तर

3

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

// File 1 
window.closures = window.closures || {} 
window.closures["page1"] = (function() { 
    // Javascript for Page 1 
}); 

// File 2 
window.closures = window.closures || {} 
window.closures["page2"] = (function() { 
    // Javascript for Page 2 
});  

// File 3 
window.closures = window.closures || {} 
window.closures["page2"] = (function() { 
    // Javascript for Page 2 
}); 

फिर, अपने पेज में:

<!-- This one combined.js file will be downloaded once and cached //--> 
<script type="text/javascript" src="combined.js"></script> 
<script> 
    // Run the Javascript in your combined.js intended for page2 
    window.closures["page2"]() 
</script> 
+0

बंद करने का उपयोग क्यों करें? यह वास्तव में नियमित वस्तुओं/कक्षाओं/कार्यों/तरीकों से कहीं भी तेज है? – Jodes

+0

6 साल बाद, शायद मापने योग्य नहीं। जावास्क्रिप्ट इंजन बहुत तेज हो गया है। –

3

1 फ़ाइल में गठबंधन करें। इसे कैश प्राप्त करने दें। यह किसी भी पृष्ठ पर एक बार लोड होता है, और किसी भी बाद के पृष्ठों के लिए यह कैश की गई प्रति का उपयोग कर सकता है।

+0

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

0

यह हमेशा HTTP अनुरोधों की संख्या को संतुलित करने और स्थानांतरित बाइट्स को सीमित करने का कार्य है, जो वास्तव में अभी तक आवश्यक नहीं हैं।

    सब कुछ
  1. गठबंधन 1 फ़ाइल में
  2. तीन अलग-अलग फ़ाइलें हैं, और आवश्यकतानुसार
  3. तीन अलग-अलग फ़ाइलें हैं उन्हें लोड, तो उस पृष्ठ के लिए आवश्यक सही दूर एक लोड:

    तीन संभावनाएं हैं और दूसरों को प्रीलोड करें (जब समय सही है)

आप केवल एबी लोड परीक्षण करके अपनी स्थिति के लिए सबसे अच्छा क्या जानते हैं।

सब कुछ स्थानांतरित डेटा के आकार, आवश्यक कार्यक्षमता के ओवरलैप और कुछ कार्यक्षमता की संभावना की संभावना पर निर्भर करता है।

0

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

0

यदि संयुक्त फ़ाइल कहती है, 25kb minified, तो इसके लिए जाएं। लेकिन अगर यह उससे अधिक है, तो मैं कहूंगा कि उनमें से सबसे बड़ा है, और उस जेएस फ़ाइल को अलग होने दें। बाकी को मिलाएं। वह 25kb सीमा चीज़ भी कठिन नियम नहीं है, यह आपके ऊपर है।

यदि आपकी व्यक्तिगत फाइलें 30kb कहने की परिमाण में हैं, तो मैं उन्हें संयोजन करने की सलाह नहीं दूंगा, और व्यक्तिगत जेएस फ़ाइलों को व्यक्तिगत जेएस फाइलों के रूप में कैश किया जा सकता हूं।

उम्मीद है कि मदद करता है।

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