CloudFlare रॉकेट लोडर का इस तरह वर्णन करता है ...
रॉकेट लोडर एक सामान्य-उद्देश्य वाला एसिंक्रोनस जावास्क्रिप्ट लोडर है जो हल्के आभासी ब्राउज़र से जुड़ा होता है जो कि विंडो.ऑन लोड के बाद किसी भी जावास्क्रिप्ट कोड को सुरक्षित रूप से चला सकता है।
रॉकेट लोडर चीजों का एक गुच्छा करता है:
- यह सुनिश्चित करता है कि आपके पृष्ठ की सभी स्क्रिप्ट लोड होने से आपके पृष्ठ की सामग्री को अवरुद्ध नहीं करेंगी;
- अपने पृष्ठ की सभी स्क्रिप्ट्स को लोड करता है, जिसमें तृतीय पक्ष स्क्रिप्ट शामिल हैं, अतुल्यकालिक रूप से;
- एक ही अनुरोध में सभी स्क्रिप्ट अनुरोधों को बंडल करता है, जिस पर कई प्रतिक्रियाओं को स्ट्रीम किया जा सकता है;
- अधिकांश ब्राउज़रों पर लोकलस्टोरेज का उपयोग करता है और लगभग सभी स्मार्ट फोन स्क्रिप्ट को स्टोर करने के लिए और अधिक बुद्धिमानी से करता है ताकि जब तक वे आवश्यक न हों, तब तक रिफ्लेक्ट न हो।
तो यह बहुत अच्छा है, लेकिन यह इसे कैसे प्राप्त करता है?
मैंने अपनी साइट पर CloudFlare + Rocket Loader चलाने से जो कुछ पढ़ा और खोजा है, वह लगभग इसी तरह काम करता है ...
क्लाउड वेब सर्वर से HTML पेज का अनुरोध करने पर, इसे मूल वेब होस्ट से लोड करने के बाद, यह सभी टैग को फिर से लिखता है <script type="
text/rocketscript
">
ब्राउज़र स्वाभाविक रूप से स्क्रिप्ट टैग को अनदेखा कर देते हैं क्योंकि वे "टेक्स्ट / रॉकेटस्क्रिप्ट" प्रारूप को नहीं समझते हैं।
CloudFlare cloudflare.min.js
उस पृष्ठ पर एक अतिरिक्त स्क्रिप्ट भी इंजेक्ट करता है जो जादू करता है ( यहाँ स्वरूपित संस्करण देखें )। यह केवल ब्राउज़र द्वारा शुरू की गई स्क्रिप्ट है (एसिंक्रोनस रूप से)।
यह स्क्रिप्ट किसी भी स्क्रिप्ट के लिए पेज को "टेक्स्ट / रॉकेटस्क्रिप्ट" टाइप करती है।
यह तब जांचता है कि क्या इनमें से कोई स्क्रिप्ट पहले से ही ब्राउज़र के स्थानीय भंडारण में मौजूद है। यदि नहीं, तो यह CloudFlare CDN से उनके लिए एक AJAX अनुरोध करता है (तार्किक बंडलों में संयुक्त)। मुझे पूरा यकीन नहीं है कि यह कैसे काम करता है कि कैसे स्क्रिप्ट को एक साथ समूहित किया जाए।
सीडीएन सर्वर स्क्रिप्ट को इकट्ठा करते हैं (जो कई अलग-अलग सर्वरों से आ सकते हैं: Google, ट्विटर, फेसबुक, अन्य सीडीएन आदि), या तो उनके कैश से, या मूल सर्वर से, और फिर उन्हें वापस भेजने से पहले उन्हें संयोजित, छोटा और संयोजित करें। ब्राउज़र को।
इस आभासी ब्राउज़र की बात है कि वे बस कुछ जावास्क्रिप्ट होना चाहिए कि फिर सही क्रम में इन लिपियों में से प्रत्येक चलाता है:
document.write()
पृष्ठ पर सही स्थान पर उस सामग्री को कॉल और इंजेक्ट करने के लिए सभी को पकड़ने । (संभवतः write()
कस्टम के साथ ब्राउज़र के फ़ंक्शन को अधिलेखित करके ?)
- DOMContentLoaded और लोड के रूप में घटनाओं को पीछे छोड़ना ।
मैं वास्तव में काफी हैरान हूं कि यह काम करता है (हालांकि शायद यह हमेशा नहीं होता है )। लेकिन सामान्य परिस्थितियों में, मुझे नहीं लगता कि डेवलपर्स को अपने जावास्क्रिप्ट को संगत बनाने के लिए कुछ विशेष करने की आवश्यकता है।
यह एक सामुदायिक विकी है, इसलिए कृपया किसी भी अतिरिक्त विवरण को संपादित करें और गायब करें।