← ब्लॉग पर वापस जाएं

Cloudflare Workers IP जियोलोकेशन: कैशिंग और कोल्ड स्टार्ट

Cloudflare Workers IP जियोलोकेशन: कैशिंग और कोल्ड स्टार्ट

Cloudflare Workers IP जियोलोकेशन का अर्थ है किसी Worker के भीतर आगंतुक के बारे में लोकेशन डेटा पढ़ना, या तो अंतर्निहित request.cf ऑब्जेक्ट से या एज से किसी बाहरी IP इंटेलिजेंस API को कॉल करके। दोनों तरीक़े अलग सवालों के जवाब देते हैं, और उन पर निर्माण करने से पहले हर एक की कैशिंग और कोल्ड-स्टार्ट व्यवहार को समझना उचित है।

Workers आपको मुफ़्त में क्या देता है

Worker तक पहुँचने वाले हर अनुरोध के साथ Cloudflare द्वारा भरा गया एक request.cf ऑब्जेक्ट आता है। इसमें आगंतुक का देश, शहर, क्षेत्र, निर्देशांक, टाइमज़ोन, ASN और AS संगठन होते हैं, साथ में colo फ़ील्ड जो उस डेटा सेंटर का नाम बताता है जिसने अनुरोध संभाला। CF-IPCountry हेडर भी देश कोड लाता है। चूँकि यह डेटा आपका कोड चलने से पहले जुड़ चुका होता है, इसलिए इसकी कोई अतिरिक्त सबरिक्वेस्ट या अतिरिक्त लेटेंसी नहीं लगती।

सीमा दायरे की है। request.cf मौजूदा अनुरोध के कनेक्ट करने वाले क्लाइंट का वर्णन करता है, और कुछ नहीं। यह लॉग लाइन, फ़ॉर्म फ़ील्ड, वेबहुक पेलोड या X-Forwarded-For श्रृंखला में दिखने वाले IP एड्रेस के बारे में नहीं बता सकता, और इसमें VPN, Tor या एब्यूज़ फ़्लैग जैसे कोई प्रतिष्ठा संकेत नहीं होते। जैसे ही आपको किसी मनमाने एड्रेस को समृद्ध करना हो, आप API कॉल कर रहे होते हैं, और यहीं से कैशिंग के निर्णय शुरू होते हैं।

एज पर एनरिचमेंट डेटा की कैशिंग

Worker से IP लुकअप एक सबरिक्वेस्ट है, इसलिए हर बिना-कैश वाला लुकअप अनुरोध के रास्ते में एक नेटवर्क राउंड ट्रिप जोड़ता है। Cloudflare नतीजा कैश करने के कई स्थान देता है: Cache API (प्रति डेटा सेंटर, वैश्विक रूप से प्रतिकृत नहीं), KV (वैश्विक रूप से पढ़ने योग्य पर अंततः संगत, जिसमें राइट को फैलने में समय लगता है), और Durable Objects जब आपको एक समन्वित प्रति चाहिए। इनमें से कोई भी सीधे बदला जा सकने वाला वैश्विक कैश नहीं है, इसलिए इस आधार पर चुनें कि आप क्या सह सकते हैं: अधिक पढ़े जाने वाले लुकअप के लिए Cache API सबसे सरल और तेज़ है, जबकि KV उन मानों के लिए ठीक है जिन्हें आप हर स्थान से दृश्यमान चाहते हैं।

अधिक उपयोगी डिज़ाइन निर्णय प्रति फ़ील्ड टाइम-टू-लिव है, क्योंकि IP इंटेलिजेंस डेटा समान रूप से पुराना नहीं होता। देश और ASN असाइनमेंट धीरे बदलते हैं, क्योंकि एड्रेस ब्लॉक महीनों या वर्षों में पुनः आवंटित होते हैं, इसलिए कई घंटों का TTL उचित है। प्रतिष्ठा फ़्लैग अलग हैं। ipto की VPN, Tor और एब्यूज़ फ़ीड हर 6 घंटे में और इसके IP तथा ASN डेटासेट रोज़ रिफ़्रेश होते हैं, इसलिए is_tor जैसे फ़्लैग को कुछ घंटों से अधिक कैश करने का मतलब है कि आप स्रोत से भी पुराने उत्तर देंगे। व्यावहारिक बँटवारा यह है कि नेटवर्क तथ्यों (asn, asn_org, देश, शहर) को लगभग एक दिन और फ़्लैग (is_vpn, is_tor, is_abuser, is_datacenter) को फ़ीड अंतराल से अधिक नहीं कैश करें।

  • कैश की कुंजी सामान्यीकृत IP रखें (IPv6 के लिए, यदि आपका उपयोग मामला प्रति-होस्ट की जगह प्रति-नेटवर्क है तो /64 पर कुंजी रखने पर विचार करें)।
  • नकारात्मक नतीजे भी कैश करें, ताकि सूचीबद्ध न किए गए एड्रेस के बार-बार लुकअप हर बार API तक न पहुँचें।
  • bogon नतीजों को ग़लती से सार्वजनिक कुंजी के तहत कभी कैश न करें: 10.0.0.1 जैसे प्राइवेट एड्रेस का उत्तर बिना किसी API कॉल के स्थानीय रूप से दिया जा सकता है।

Workers पर कोल्ड स्टार्ट

Workers कंटेनरों की जगह V8 आइसोलेट में चलते हैं, इसलिए कोल्ड स्टार्ट आम तौर पर कुछ मिलीसेकंड का मामला है, कंटेनर-आधारित फ़ंक्शनों में परिचित सैकड़ों मिलीसेकंड का नहीं। फिर भी आपका कोड अपनी इनिशियलाइज़ेशन की क़ीमत चुकाता है: बड़ा बंडल, किसी बड़ी लुकअप तालिका की भारी मॉड्यूल-स्तरीय पार्सिंग, या टॉप-लेवल await, ये सब नए आइसोलेट पर पहले अनुरोध में होते हैं। इसका समाधान साधारण है: बंडल छोटा रखें, स्टार्टअप पर बड़ी इन-मेमोरी संरचनाएँ बनाने से बचें, और Worker के भीतर पूरा जियोलोकेशन डेटाबेस भेजने की जगह एक छोटी API कॉल को प्राथमिकता दें।

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

ipto के साथ सब कुछ जोड़ना

एक समझदार पैटर्न यह है कि कनेक्ट करने वाले क्लाइंट के बारे में तुरंत और मुफ़्त तथ्यों के लिए request.cf का उपयोग करें और केवल तब एनरिचमेंट API कॉल करें जब आपको अधिक चाहिए। ipto का API दस्तावेज़ीकरण IP लुकअप रिस्पॉन्स दिखाता है, जो देश, शहर, ASN, org, currency_code और फ़्लैग is_vpn, is_tor, is_abuser, is_datacenter तथा bogon/bogon_type लौटाता है। यह बिना साइनअप के मुफ़्त है और प्रतिदिन 1,000 मुफ़्त अनुरोध देता है, जो कुंजी-प्रबंधन चरण के बिना Worker का प्रोटोटाइप बनाने के लिए पर्याप्त है।

जब लुकअप बताए कि एड्रेस किसी होस्टिंग नेटवर्क का है, तो आप ASN लुकअप में आगे देख सकते हैं कि उसे कौन चलाता है और वह कौन-सी रेंज घोषित करता है। चिह्नित ट्रैफ़िक के लिए, VPN, Tor और प्रॉक्सी चेकर is_vpn और is_tor के पीछे का प्रमाण दिखाता है, और IP एब्यूज़ चेकर पुष्टि किया गया स्कोर दिखाता है। याद रखें कि शहर-स्तर का स्थान इस बात का अनुमान है कि नेटवर्क कहाँ पंजीकृत या रूट किया गया है, यह नहीं कि कोई व्यक्ति कहाँ बैठा है, जिस सीमा को शहर की सटीकता सीमित क्यों है में समझाया गया है।

एज लुकअप को तेज़ बनाता है, पर अंतर्निहित डेटा को अधिक सटीक नहीं बनाता। request.cf और किसी भी API नतीजे को एक ही श्रेणी का प्रमाण मानें, हर एक को इस आधार पर कैश करें कि वह कितनी जल्दी बदलता है, और अपने TTL का फ़ैसला एज की गति से नहीं, स्रोत की ताज़गी से होने दें।

सीधे जवाब

request.cf एक ऑब्जेक्ट है जिसे Cloudflare Worker के हर अनुरोध के साथ जोड़ता है। इसमें क्लाइंट का देश, शहर, क्षेत्र, निर्देशांक, टाइमज़ोन, ASN और AS संगठन, और अनुरोध संभालने वाला colo शामिल होता है।
नहीं। request.cf ऑब्जेक्ट केवल उस क्लाइंट का वर्णन करता है जिसने मौजूदा अनुरोध के लिए कनेक्ट किया। लॉग या पेलोड के किसी मनमाने IP एड्रेस को समृद्ध करने के लिए Worker से IP इंटेलिजेंस API कॉल करें और नतीजा कैश करें।
देश और ASN जैसे धीरे बदलने वाले नेटवर्क तथ्यों को लगभग एक दिन, और VPN, Tor तथा एब्यूज़ जैसे प्रतिष्ठा फ़्लैग को स्रोत फ़ीड के रिफ़्रेश अंतराल से अधिक नहीं कैश करें। ipto अपनी थ्रेट फ़ीड हर 6 घंटे में और IP तथा ASN डेटासेट रोज़ रिफ़्रेश करता है।
← ब्लॉग पर वापस जाएं