2010-09-20 17 views
7

मेरे पास यह है कि Google के एसिंक एनालिटिक्स ट्रैकर कैसे काम करता है। निम्नलिखित कोड एक कमांड सरणी init करने के लिए प्रयोग किया जाता है:Google Analytics async ट्रैकर समझा

<script type="text/javascript"> 
    var _gaq = _gaq || []; 
    _gaq.push(
    ['_setAccount', 'UA-xxxxxxxx-x'], 
    ['_trackPageview'] 
); 
</script> 

अब, यह एक मानक सरणी एक बार जीए के कोड भरी हुई है प्रतिस्थापित हो जाता है और कतार के एक प्रकार के हैं कि आपके क्लिक संग्रहीत करता है के रूप में प्रयोग किया जाता है कि है।

मेरा भ्रम यह सोचने में निहित है कि कोई क्लिक संभवतः तब तक जारी रखा जा सकता है जब कोई उपयोगकर्ता एक लिंक पर क्लिक करता है जो पुनः लोड करने का कारण बनता है (GA जावास्क्रिप्ट लोड होने से पहले)। यदि GA कोड ने _gaq ऑब्जेक्ट पर उस पुश पर कब्जा नहीं किया है, तो उपयोगकर्ता एक लिंक पर क्लिक करता है और एक नए पेज पर जाता है, तो यह सरणी हर बार शुरू नहीं होती है?

क्या यह सच नहीं है कि जावास्क्रिप्ट वैरिएबल उन अनुरोधों पर जारी नहीं रहेगा जो रीफ्रेश का कारण बनते हैं? यदि ऐसा है, तो क्या हमने उस मूल क्लिक को खो दिया है जिसके कारण पेज रीलोड हुआ?

कोई स्पष्टीकरण की सराहना की जाती है।

उत्तर

5

हां, आप सही हैं कि यदि उपयोगकर्ता ga.js लोड होने से पहले साइट से दूर क्लिक करता है और Google के सर्वर पर __utm.gif अनुरोध निष्पादित करता है, तो यह _gaq सरणी को ट्रैक नहीं करेगा और वह जानकारी चली जाएगी सदैव। लेकिन यह संस्करण कोड पुराने सिंक्रोनस कोड पर अभी भी कई लाभ प्रदान करता है।

सबसे पहले, इस विधि का उपयोग कर ga.js की लोडिंग अवरुद्ध नहीं है।

चतुरता से, ga.js की लोडिंग को हार्ड-कोडित <script> टैग के माध्यम से अप्रत्यक्ष रूप से जावास्क्रिप्ट के माध्यम से इंजेक्शन दिया जाता है। Google Code Blog के अनुसार,

टुकड़ा की दूसरी छमाही तर्क उस पृष्ठ पर अन्य स्क्रिप्ट के साथ समानांतर में ट्रैकिंग कोड को लोड करता है प्रदान करता है। यह अज्ञात फ़ंक्शन निष्पादित करता है जो गतिशील रूप से तत्व बनाता है और उचित प्रोटोकॉल वाले स्रोत सेट करता है। नतीजतन, अधिकांश ब्राउज़र पृष्ठ पर अन्य स्क्रिप्ट्स के साथ समानांतर में ट्रैकिंग कोड लोड करेंगे, इस प्रकार वेब पेज लोड समय को कम करता है।

इसका मतलब यह है कि ga.js की लोडिंग अधिकांश आधुनिक ब्राउज़र के लिए एक गैर अवरुद्ध तरह से होता है (और एक लाभ के रूप, async = "true" हिस्सा है, वर्तमान में FF 4+, IE10p2+, Chrome 12+, Safari 5.1+, में समर्थित इस asynchronization formalizes)। यह हल्के से लोड समय को कम करता है, और ga.js लोड होने से पहले क्लिक होने पर संभावना कम हो जाती है।

अग्रिम में _gaq सरणी को कतारबद्ध करने का लाभ दौड़ की स्थिति को रोकने के लिए है; इससे पहले, अगर आपने ga.js लोड होने से पहले जीए कॉल करने की कोशिश की (कहें, एक वीडियो प्ले इवेंट ट्रैकिंग), तो यह एक त्रुटि फेंक देगा और इवेंट कॉल खो जाएगा और कभी भी पुनर्प्राप्त नहीं होगा। इस तरह, जब तक ga.js अंततः लोड हो जाता है, तब तक _gaq सरणी लोड समय पर सभी कॉलों को सेवा देने के लिए तैयार होती है।

+0

क्या आप एक कामकाजी लिंक प्रदान कर सकते हैं? ऐसा लगता है कि – brad

+0

टूट गया है; यह http://googlecode.blogspot.com/2009/12/google-analytics-launches-asynchronous.html है – Yahel

2

हाँ। जावास्क्रिप्ट संदर्भों को पृष्ठ रीलोड पर फेंक दिया जाता है, इसलिए यदि उपयोगकर्ता ga.js लोड से पहले पृष्ठ छोड़ देता है, तो उन हिट खो जाती हैं। जीए के एसिंक संस्करण का लाभ यह है कि इसे पृष्ठ में अधिक रखा जा सकता है, जिसका अर्थ है कि उपयोगकर्ता छोड़ने से पहले ga.js लोड होने की अधिक संभावना है।

+0

अच्छी तरह से इनलाइन जेएस _gaq इनिट कोड बहुत अधिक रखा गया है, लेकिन वे अभी भी जीए की वास्तविक लोडिंग डालने की सलाह देते हैं।जेएस आपके सभी सामान्य जेएस के बाद। और साथ ही, ga.js फ़ाइल की यह लोडिंग एसिंक नहीं है क्योंकि स्क्रिप्ट टैग ब्लॉक नहीं है? – brad

+0

शीर्ष कारण के बजाय इसे सिर के नीचे डालने की एकमात्र वजह यह है कि ओपेरा अभी तक एसिंक स्क्रिप्ट का समर्थन नहीं करता है (वे एकमात्र ब्राउज़र हैं जिसमें GA स्निपेट पूरी तरह से असीमित नहीं है)। Ga.js _is_ पूरी तरह से असीमित की लोडिंग। Async स्क्रिप्ट सामान्य लोगों की तरह ब्लॉक नहीं करते हैं। जानकारी के लिए – Brian

+0

thx वाईसी के उत्तर गहराई में थोड़ा और था। – brad