गाइड

IP से डिफ़ॉल्ट चुना जाने वाला देश ड्रॉपडाउन जोड़ें

जो देश ड्रॉपडाउन विज़िटर के IP पते के संकेत के अनुसार डिफ़ॉल्ट चुनता है, वह ज़्यादातर लोगों को लंबी सूची में स्क्रॉल करने से बचाता है, बशर्ते डिफ़ॉल्ट गलत होने पर वह उन्हें इसे बदलने भी दे।

डिफ़ॉल्ट मान पाना

पेज का अनुरोध आने पर अपने सर्वर पर विज़िटर के IP पते का लुकअप करें, और रिस्पॉन्स से country_code फ़ील्ड पढ़कर उसे ड्रॉपडाउन के चुने गए विकल्प के रूप में सेट करें, पेज के ब्राउज़र तक भेजे जाने से भी पहले।

GET /v1/ip?ip=192.0.2.15
{
  "status": "ok",
  "ip": "192.0.2.15",
  "version": 4,
  "found": true,
  "country": "Spain",
  "country_code": "ES",
  "region": "Madrid",
  "city": "Madrid",
  "postcode": "28001",
  "lat": 40.4168,
  "lon": -3.7038,
  "timezone": "Europe/Madrid",
  "asn": 5678,
  "org": "Example Networks"
}

इसे सर्वर पर रेंडर करना

चूँकि यह पूरी तरह सर्वर पर, पेज रेंडर होने से पहले होता है, इसलिए ब्राउज़र में गलत डिफ़ॉल्ट की झलक और फिर सुधार नहीं दिखता, जो क्लाइंट साइड वाले उन तरीकों में होता है जो पेज लोड हो जाने के बाद कॉल करते हैं। आपके द्वारा बनाए गए HTML में ही मेल खाने वाले विकल्प पर selected एट्रिब्यूट सेट करें, country_code को उन ISO कोड से मिलाते हुए जो आपके विकल्पों के मान पहले से इस्तेमाल करते हैं।

दूसरा उदाहरण: चेकआउट में देश फ़ील्ड पहले से भरना

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

बदलाव की अनुमति हमेशा दें

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

एक आम गलती जिससे बचना चाहिए

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

जब लुकअप में कुछ न मिले

अगर found का मान false आता है, जो कुछ निजी या अनावंटित रेंज के लिए होता है, तो फ़ील्ड को अपरिभाषित स्थिति में छोड़ने के बजाय किसी तटस्थ डिफ़ॉल्ट पर लौटें, जैसे खाली चयन या आपका सबसे आम देश।

IPv6 विज़िटर के लिए भी यही तरीका काम करता है

IPv6 से जुड़ने वाले विज़िटर को उसी एंडपॉइंट से वही country_code फ़ील्ड मिलता है, बस /24 के बजाय /48 नेटवर्क के आधार पर। अनुरोध किस IP संस्करण से आया, इसके आधार पर ड्रॉपडाउन लॉजिक में कुछ भी बदलने की ज़रूरत नहीं है। संस्करण से जुड़े ब्योरे चाहिए तो IPv6 लुकअप दस्तावेज़ देखें।

इस सुविधा की लागत

यह हर नए विज़िटर सेशन पर एक अनुरोध है, जो सेशन के लिए कैश रहता है ताकि एक विज़िट में कई फ़ॉर्म पेजों पर बार-बार लुकअप न हों। इससे यह सुविधा, सबसे व्यस्त साइटों को छोड़कर, हर कुंजी में शामिल या बिना कुंजी के किसी एक पते से उपलब्ध प्रतिदिन 2,500 मुफ़्त अनुरोधों के भीतर आराम से रहती है।

एक समझदार डिफ़ॉल्ट सौ विकल्पों वाली सूची में स्क्रॉल करने से बचाता है, और अगर अनुमान गलत हो तो विज़िटर के पास पूरा नियंत्रण रहता है। फ़ील्ड के ब्योरे IPv4 लुकअप दस्तावेज़ में हैं।