2010-09-12 9 views
6

मैं बहुत उत्सुक हूं कि आपके रेल ऐप्स में जावास्क्रिप्ट कैसे शामिल है। उदाहरण के लिए:आपके रेल ऐप में जावास्क्रिप्ट कैसे शामिल है?

  • क्या आप अपने सभी जेएस कोड को एक फ़ाइल में पैकेज करते हैं और सभी अनुरोधों के लिए इसे सेवा देते हैं?
  • क्या आप कंडीशनर/एक्शन के आधार पर सशर्त रूप से कुछ जेएस लोड करते हैं?
  • आप किस उपकरण या तकनीकों का उपयोग करते हैं, यानी: परिसंपत्ति_पैकर, यूई कंप्रेसर, स्पॉकेट्स, बिगपाइप प्रेरित कार्यान्वयन?

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

किसी को भी साझा करने के लिए कोई सलाह है?

बहुत बहुत धन्यवाद!

उत्तर

1

सबसे पहले, फ़ायरफ़ॉक्स के लिए इस प्लगइन को आजमाएं: http://developer.yahoo.com/yslow/। यह आपको धीमेपन के स्रोतों को निर्धारित करने में मदद करेगा, और आपके स्क्रिप्ट उपयोग का विश्लेषण कर सकता है और सुधार का सुझाव दे सकता है।

इसके अलावा, तेजी से वेबसाइटों के लिए सर्वोत्तम प्रथाओं पर याहू से यह आलेख देखें: http://developer.yahoo.com/performance/rules.html। यह सलाह सभी वेबसाइटों पर लागू होती है, केवल रेल नहीं।

3

कई व्यापार गत विचार करने के लिए कर रहे हैं:

  • आप एक बड़ा जे एस फ़ाइल तो यह आपके सभी पृष्ठों के लिए कैश की जा चाहिए। लेकिन अगर केवल कुछ पेज जेएस का उपयोग करते हैं तो यह अच्छा नहीं है।
  • यदि आपके पृष्ठ जेएस साझा नहीं करते हैं तो आप प्रत्येक पृष्ठ के व्यक्तिगत जेएस के लिए "आवश्यक" लोडिंग का उपयोग करना चाह सकते हैं। लेकिन आप बहुत सारे भार नहीं चाहते हैं क्योंकि प्रत्येक जेएस फ़ेच के पास अपना ओवरहेड होता है।

नोट्स

  • सुनिश्चित करें कि आपके जे एस के सभी अपने ग्राहकों पर हमेशा के लिए संचित किया जाएगा सुनिश्चित करें। फ़ाइल नामों या यूआरएल में संस्करण संख्याओं का उपयोग करें (foo.js? 123)
  • सुनिश्चित करें कि जेएस फ़ाइलें कम हो गई हैं।
  • सुनिश्चित करें कि वेब सर्वर में gzip एन्कोडिंग चालू है।
  • आप अपने जेएस जैसे अमेज़ॅन के Cloudfront या अपने प्रतिस्पर्धियों में से एक के लिए एक कम लागत वाली सामग्री वितरण नेटवर्क का उपयोग करना चाह सकते हैं।

अपने विशिष्ट प्रश्न

के जवाब आप एक एकल फाइल में अपने सभी js कोड पैकेज और सभी अनुरोधों के लिए सेवा करते हैं?

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

क्या आप कंडीशनर/एक्शन के आधार पर सशर्त रूप से कुछ जेएस लोड करते हैं?

हां, कुछ बहुत भारी जेएस पृष्ठों के लिए, उन पृष्ठों को एक अतिरिक्त जेएस फ़ाइल मिलती है। सभी पृष्ठों को reg JS फ़ाइल मिलती है और यह सभी पृष्ठों के लिए कैश/उपलब्ध है।

आप कौन से टूल्स या तकनीकों का उपयोग करते हैं, यानी: परिसंपत्ति_पैकर, यूई कंप्रेसर, स्पॉकेट्स, बिगपाइप प्रेरित कार्यान्वयन?

  • YUI कंप्रेसर
  • S3 मेरी assets.foo.com डोमेन विलय करने के लिए
  • रेक कार्यों की सेवा के लिए/कम से कम एक से अधिक जे एस स्रोत फ़ाइलों
संबंधित मुद्दे