सबसे पहले, मैं दो पिछले उत्तरों से असहमत हूं - न तो सवाल उठाता है।
HTTP प्रोटोकॉल में काम करने पर वेब-आधारित एनालिटिक्स ऐप्स (जैसे Google Analytics) के लिए एक-पिक्सेल छवि एक आंतरिक समस्या को हल करती है - क्लाइंट से सर्वर में डेटा को कैसे स्थानांतरित करना है ।
प्रोटोकॉल द्वारा बताए गए तरीकों में से सबसे सरल, (सबसे सरल तरीका है जिसमें एक अनुरोध निकाय शामिल है) जीईटी अनुरोध है । इस प्रोटोकॉल विधि के अनुसार, ग्राहक संसाधनों के लिए सर्वर से अनुरोध करते हैं; सर्वर उन अनुरोधों को संसाधित करते हैं और उचित प्रतिक्रियाएं देते हैं।
जीए की तरह एक वेब-आधारित एनालिटिक्स ऐप के लिए, यह यूनि-दिशात्मक योजना बुरी खबर है, क्योंकि यह मांग पर एक क्लाइंट से डेटा प्राप्त करने के लिए सर्वर को अनुमति देने के लिए प्रकट नहीं होता है - फिर से, सभी सर्वर कर सकते हैं संसाधनों की आपूर्ति नहीं है उनसे निवेदन करें।
तो क्लाइंट से सर्वर पर डेटा प्राप्त करने की समस्या का समाधान क्या है? HTTP संदर्भ में GET (उदाहरण के लिए, POST) के अलावा अन्य प्रोटोकॉल विधियां हैं, लेकिन यह कई कारणों के लिए एक सीमित विकल्प है (जैसा कि इसके निराकरण और विशेष उपयोग जैसे कि फ़ॉर्म डेटा सबमिट करना)।
यदि आप किसी ब्राउज़र से GET अनुरोध को देखते हैं, तो आप देखेंगे कि यह एक अनुरोध URL और अनुरोध हेडर (जैसे, संदर्भकर्ता और उपयोगकर्ता-एजेंट हेडर) से बना है, बाद वाले में क्लाइंट के बारे में जानकारी शामिल है - जैसे, ब्राउज़र प्रकार और संस्करण, ब्राउज़र लैन्गॉउग, ऑपरेटिंग सिस्टम, आदि।
फिर से, यह अनुरोध का हिस्सा है जो क्लाइंट सर्वर को भेजता है। तो एक पिक्सेल जिफ़ को प्रेरित करने वाले विचार क्लाइंट के लिए रिक्वेस्ट हैडर के अंदर लिपटे सर्वर पर वेब मेट्रिक्स डेटा भेजने के लिए है।
लेकिन फिर क्लाइंट को एक संसाधन का अनुरोध करने के लिए कैसे प्राप्त करें ताकि इसे मेट्रिक्स डेटा भेजने में "छल" किया जा सके? और सर्वर को वास्तविक डेटा भेजने के लिए क्लाइंट कैसे प्राप्त करें?
Google Analytics एक अच्छा उदाहरण है: ga.js फ़ाइल (क्लाइंट के लिए एक बड़ी फ़ाइल जिसका डाउनलोड वेब पेज में एक छोटी स्क्रिप्ट द्वारा ट्रिगर किया गया है) में कोड की कुछ पंक्तियाँ शामिल हैं जो क्लाइंट को किसी विशेष संसाधन से किसी विशेष संसाधन का अनुरोध करने के लिए निर्देशित करती हैं सर्वर (GA सर्वर) और अनुरोध हैडर में लिपटे हुए कुछ डेटा भेजने के लिए।
लेकिन चूंकि इस अनुरोध का उद्देश्य वास्तव में संसाधन प्राप्त करना नहीं है, बल्कि सर्वर को डेटा भेजना है, इसलिए यह संसाधन यथासंभव छोटा होना चाहिए और यह वेब पेज में प्रस्तुत किए जाने पर दिखाई नहीं देना चाहिए - इसलिए, 1 x 1 पिक्सेल पारदर्शी gif। आकार सबसे छोटा आकार संभव है, और प्रारूप (gif) छवि स्वरूपों में सबसे छोटा है।
अधिक सटीक रूप से, सभी GA डेटा - प्रत्येक एकल आइटम - को इकट्ठा किया जाता है और अनुरोध URL के क्वेरी स्ट्रिंग ('?' के बाद सब कुछ) में पैक किया जाता है । लेकिन उस डेटा के लिए ग्राहक से (जहाँ यह बनाया गया है) जीए सर्वर (जहाँ यह लॉग इन है और एकत्र होता है) से जाने के लिए एक HTTP रिक्वेस्ट होनी चाहिए, इसलिए ga.js (Google एनालिटिक्स स्क्रिप्ट जो डाउनलोड की जाती है, जब तक कि यह न हो। क्लाइंट द्वारा कैश्ड, जब पृष्ठ लोड होने पर फंक्शन नामक एक फ़ंक्शन के परिणामस्वरूप) क्लाइंट को सभी एनालिटिक्स डेटा को इकट्ठा करने के लिए निर्देशित करता है - जैसे, कुकीज़, लोकेशन बार, रिक्वेस्ट हेडर इत्यादि ।-- इसे एक ही स्ट्रिंग में समेटें। और इसे एक क्वेरी स्ट्रिंग के रूप में एक URL ( * http: //www.google-analytics.com/__utm .gif* ?) पर जोड़ें और वह अनुरोध URL बन जाता है ।
किसी भी वेब ब्राउज़र का उपयोग करके यह साबित करना आसान है जो आपको अपने ब्राउज़र में प्रदर्शित वेब पेज के लिए HTTP अनुरोध (जैसे, सफारी के वेब इंस्पेक्टर , फ़ायरफ़ॉक्स / क्रोम फायरबग , आदि) को देखने की अनुमति देता है ।
उदाहरण के लिए, मैंने अपने ब्राउज़र के लोकेशन बार में एक कॉर्पोरेट होम पेज पर मान्य url टाइप किया, जिसने उस होम पेज को लौटा दिया और इसे अपने ब्राउज़र में प्रदर्शित किया (मैं किसी भी वेब साइट / पेज को चुन सकता था जो प्रमुख एनालिटिक्स ऐप्स में से एक का उपयोग करता है, GA , Omniture, Coremetrics, आदि)
मेरे द्वारा उपयोग किया जाने वाला ब्राउजर सफारी था, इसलिए मैंने मेन्यू बार में डेवलप पर क्लिक किया, फिर वेब इंस्पेक्टर को दिखाएं । वेब इंस्पेक्टर की शीर्ष पंक्ति पर, संसाधन पर क्लिक करें , बाएं हाथ के स्तंभ पर दिखाए गए संसाधनों की सूची से utm.gif संसाधन खोजें और क्लिक करें, फिर हेडर टैब पर क्लिक करें । यह आपको कुछ इस तरह दिखाएगा:
Request URL:http:
utmwv=1&utmn=1520570865&
utmcs=UTF-8&
utmsr=1280x800&
utmsc=24-bit&
utmul=enus&
utmje=1&
utmfl=10.3%20r181&
Request Method:GET
Status Code:200 OK
Request Headers
User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/533.21.1
(KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
Response Headers
Cache-Control:private, no-cache, no-cache=Set-Cookie, proxy-revalidate
Content-Length:35
Content-Type:image/gif
Date:Wed, 06 Jul 2011 21:31:28 GMT
नोटिस करने के लिए महत्वपूर्ण बिंदु हैं:
अनुरोध वास्तव में utm.gif के लिए एक अनुरोध था, जैसा कि ऊपर की पहली पंक्ति द्वारा दर्शाया गया है: * अनुरोध URL: http: //www.google-analytics.com/__utm.gif*।
Google Analytics पैरामीटर अनुरोध URL से जुड़े क्वेरी स्ट्रिंग में स्पष्ट रूप से दिखाई देते हैं : उदाहरण के लिए,
utmsr ग्राहक स्क्रीन रिज़ॉल्यूशन को संदर्भित करने के लिए GA का चर नाम है, मेरे लिए, 1280x800 का मान दिखाता है; utmfl फ़्लैश संस्करण का चर नाम है, जिसका मूल्य 10.3 है, आदि।
प्रतिक्रिया हैडर कहा जाता है
सामग्री प्रकार (ग्राहक के लिए सर्वर वापस द्वारा भेजे गए) भी पुष्टि करता है कि संसाधन का अनुरोध किया और लौट आए एक 1x1 पिक्सेल gif था:
सामग्री-प्रकार: image / gif
क्लाइंट और सर्वर के बीच डेटा ट्रांसफर करने की यह सामान्य योजना हमेशा के लिए रही है; ऐसा करने का एक बहुत अच्छा तरीका हो सकता है, लेकिन यह एकमात्र तरीका है जिसके बारे में मुझे पता है (जो एक होस्टेड एनालिटिक्स सेवा द्वारा लगाए गए अवरोधों को संतुष्ट करता है)।