एक वीडियो-होस्टिंग साइट के लिए, जो प्रतिदिन लाखों इमेज सर्व करती है, थंबनेल जनरेशन को PHP बैकएंड से Cloudflare Workers पर ले जाने से ओरिजिन सर्वर पर CPU लोड पूरी तरह खत्म हो गया। इस बदलाव ने इमेज-प्रोसेसिंग लेटेंसी को डेटा सेंटर से हटाकर एज (edge) पर पहुँचा दिया, जिससे रिस्पॉन्स टाइम में भारी कमी आई और बैंडविड्थ लागत अनुमानित (predictable) हो गई।
पुराना मॉडल क्यों विफल हुआ
यह साइट, जो हजारों वीडियो प्रदर्शित करने वाला एक प्लेटफॉर्म है, एक ही पेज पर 40 तक थंबनेल एम्बेड करती है। प्रत्येक थंबनेल को मांग पर (on demand) एक PHP स्क्रिप्ट द्वारा रीसाइज किया जाता है, जो मूल फ़ाइल को पढ़ती है और उसे रीस्केल करती है। जब क्रॉलर साइट पर आते थे, तो बैकएंड सर्वर ठप हो जाता था।
एज प्रोसेसिंग पांच मुख्य आवश्यकताओं को पूरा करती है
एक प्रोडक्शन-ग्रेड थंबनेल API को इन्हें संभालना चाहिए:
- Fan-in – कई थर्ड-पार्टी होस्ट से सोर्स इमेज प्राप्त करना।
- Fan-out – कई साइज बनाना (जैसे, 320 px कार्ड, 640 px हीरो इमेज)।
- Format negotiation – बैंडविड्थ कम करने के लिए ब्राउज़र के सपोर्ट के आधार पर WebP या AVIF सर्व करना।
- Cache – यह सुनिश्चित करना कि पहली रिक्वेस्ट महंगी हो सकती है, लेकिन उसके बाद की हर रिक्वेस्ट फ्री हो।
- Security – किसी को भी मनमानी इमेज प्रोसेस करने के लिए सर्विस का दुरुपयोग करने से रोकना।
Cloudflare Workers ओरिजिन के CPU को छुए बिना प्रत्येक बिंदु का समाधान करते हैं:
- Proximity – Workers यूजर के करीब डेटा सेंटरों में चलते हैं, इसलिए प्रोसेस्ड इमेज को कम दूरी तय करनी पड़ती है।
- Built-in Image Resizing – प्लेटफॉर्म का Image Resizing फीचर पिक्सेल का काम खुद करता है, जिससे कस्टम लाइब्रेरी की जरूरत खत्म हो जाती है।
- Cache API – Workers रीसाइज्ड इमेज को एज पर स्टोर करते हैं; पहली रिक्वेस्ट के बाद एज इसे सीधे सर्व करता है।
- Programmable security – एक छोटा स्क्रिप्ट HMAC सिग्नेचर को वैलिडेट करता है, होस्टनेम और विड्थ के लिए allow-list लागू करता है, और cache poisoning से बचने के लिए cache keys को नॉर्मलाइज़ करता है।
सिस्टम कैसे काम करता है
- Origin signed URLs बनाता है – बैकएंड एक सीक्रेट की (secret key) रखता है और हर थंबनेल रिक्वेस्ट के साथ एक HMAC सिग्नेचर जोड़ देता है। URL में वांछित विड्थ और फॉर्मेट भी शामिल होता है।
- Worker सिग्नेचर को वेरीफाई करता है – प्राप्त होने पर, Worker शेयर्ड सीक्रेट के साथ HMAC को फिर से कंप्यूट करता है। यदि सिग्नेचर गायब है या गलत है, तो रिक्वेस्ट को रिजेक्ट कर दिया जाता है, जिससे दुरुपयोग रुक जाता है।
- Allow-list का प्रवर्तन – स्क्रिप्ट यह जांचती है कि सोर्स होस्टनेम एक पूर्व-निर्धारित सूची में है या नहीं और अनुरोधित विड्थ समर्थित साइज में से एक है या नहीं। यह दुर्भावनापूर्ण होस्ट को कैश होने से रोकता है।
- Cache key normalization – कैश की (cache key) से सिग्नेचर को हटा दिया जाता है; की (key) में केवल सोर्स URL, विड्थ और फॉर्मेट होता है। इससे इस बात की संभावना बढ़ जाती है कि एक ही इमेज की मांग करने वाले अलग-अलग यूजर्स एक ही कैश एंट्री तक पहुँचें।
- Edge fetch और resize – यदि इमेज पहले से कैश नहीं है, तो Worker थर्ड-पार्टी होस्ट से ओरिजिनल इमेज प्राप्त करता है, Image Resizing API चलाता है, और परिणाम को एज कैश में स्टोर करता है।
- Cache warming – हर क्रॉल के बाद, एक हल्का Python स्क्रिप्ट नए थंबनेल्स के लिए प्री-रिक्वेस्ट भेजता है। इसलिए, पहले वास्तविक यूजर को रीसाइज ऑपरेशन का इंतजार करने के बजाय एक कैश रिस्पॉन्स मिलता है।
एक महीने के बाद मापने योग्य प्रभाव
- इमेज के लिए ओरिजिन CPU – शून्य पर आ गया; बैकएंड अब कभी भी इमेज बाइट्स को प्रोसेस नहीं करता है।
- HTML सर्विंग स्पीड – इसमें उल्लेखनीय सुधार हुआ क्योंकि सर्वर अब इमेज के काम के कारण ब्लॉक नहीं होता है।
- Edge cache hit rate – 96% तक पहुँच गया, जिसका अर्थ है कि लगभग हर रिक्वेस्ट बैकएंड फेच के बिना एज से पूरी की गई।
- Latency – इसमें कमी आई क्योंकि इमेज अब केंद्रीय ओरिजिन के बजाय यूजर के पास स्थित डेटा सेंटर से सर्व की जा रही हैं।
- Bandwidth predictability – एज कैशिंग के साथ, ओरिजिन से आउटबाउंड ट्रैफिक स्थिर रहता है और इसका पूर्वानुमान लगाना आसान होता है।
निष्कर्ष
थंबनेल जनरेशन को Cloudflare Workers पर ऑफलोड करने से CPU-बाउंड बॉटलनेक एक लगभग शून्य-लागत वाले एज कैश में बदल गया। ओरिजिन अब केवल साइन किए गए URLs जारी करता है, जबकि एज फेचिंग, रीसाइजिंग, फॉर्मेट नेगोशिएशन और कैश किए गए परिणामों को सर्व करने का काम संभालता है। किसी भी ऐसी साइट के लिए जो इमेज पर बहुत अधिक निर्भर करती है—विशेष रूप से वीडियो प्लेटफॉर्म जो प्रति पेज दर्जनों थंबनेल दिखाते हैं—एज-फर्स्ट अप्रोच तेज़ पेज, अनुमानित लागत और "क्या दिखाना है" (ओरिजिन) और "इसे कैसे डिलीवर करना है" (एज) के बीच एक स्पष्ट अंतर प्रदान करती है।
