Google Analytics基本异步跟踪代码运作原理
Google Analytics异步跟踪代码,以基本跟踪代码作为数据跟踪与传递的基础。在此基础之上,根据网站业务数据需求,您可以自定义设置跨域跟踪、添加直接流 量站点、添加搜索引擎设置、事件跟踪、虚拟跟踪等功能。异步基本跟踪代码,作为数据跟踪与传递的基础,肩负着向Google Analytics服务器传递网站访客访问数据的重大责任。
知其然,才能知其所以然。了解了GA的运作原理,才能对其更好的运用,否则心里会老是有一块茫然(在我心里,就是这样的)。到底Google Analytics基本异步跟踪代码,是如何运作的呢,如何将我们网站访客的数据呈现在各类报告中的呢?本文将对其运作原理做详细介绍。
原理说明
异步代码加载速度快、数据更准确的功劳都应归功于_gaq对象,它采用队列“先进先出”的数据结构,先按照先后顺序收集好各类命令及函数的API调用,以便ga.js加载完成后按照同样的顺序处理这些调用请求,即“谁先申请,先被收集,而后先被处理”。
Google Analytics API的调用
API调用时采用_gaq.push方法,将API调用申请推送到_gaq对象队列中被收集。而被推送收集的API调用包括:JavaScript命令数 组、函数。其中,命令数组由被调用的跟踪器对象方法名称、传送给跟踪器对象方法的参数组成,也就是我们设置的各类定制跟踪,包括事件跟踪、跨域跟踪、添加 搜索引擎等等。
图三:_gaq对象及API调用推送命令数组(申请API调用)
_gaq.push(['setAccount', 'UA-XXXXX-X']);
推送函数(申请API调用)
_gaq.push(function() {
var pageTracker = _gat._getTrackerByName('myTracker');
var link = document.getElementByIdx_x('my-link-id');
link.href = pageTracker._getLinkerUrl('http://example.com/');
});
_gaq跟踪器对象的创建
当页面中第一个命令数组以_gap.push方法,申请API调用时会执行以下流程:
首先,调用var _gaq = _gaq || [];,创建_gaq跟踪器对象(并通过_gaq.push(['setAccount', 'UA-XXXXX-X']);绑定到指定的GA网络载体ID),同时各类跟踪器对象方法处于可调用状态,包括事件跟踪、跨域跟踪等方法;
其次,推送新建的_gaq跟踪器对象方法,传递相应参数,提交API调用申请。
最后,其余跟踪方法的API调用申请都被推送收集到_gap对象时,会调用_gaq.push(['_trackPageview']);执行最后一次推送,并由此方法提交将全部API调用申请提交给ga.js处理。
Ga.js处理各类API调用
在各类API申请被收集的同时,以下代码会判断站点的网络协议(安全 HTTP 协议或标准 HTTP 协议),并调用访客缓存中的ga.js(若有)或从GA服务器下载ga.js。ga.js加载完成后,会立即处理所有API调用申请、更新/读取访客cookie数据。
(function() {
var ga = document.createElement_x('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName_r('script')[0]; s.parentNode.insertBefore(ga, s);
})();
Google Analytics数据传输日志
Ga.js将所有所得数据,包括访问者IP、网站域名、请求URI、页面名称、访客浏览器/操作系统信息、事件设置、自定义变量设置、访客ID、访问次 数、访问时间、流量来源等等,赋给对应的utm变量,并将所有utm参数值对作为__utm.gif图片调用参数,写入到GA服务器端__utm.gif 图片的调用日志中,向GA服务器发送数据。GA再对日志进行数据处理、分析,生成我们所看到的各类报告。
http://www.google-analytics.com/__utm.gif?utmwv=4&utmn=769876874&utmhn=example.com&utmcs=ISO-8859-1&utmsr=1280x1024&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=9.0 r115&utmcn=1&utmdt=GATC012 setting variables&utmhid=2059107202&utmr=0&utmp=/auto/GATC012.html?utm_source=www.gatc012.org&utm_campaign=campaign+gatc012&utm_term=keywords+gatc012&utm_content=content+gatc012&utm_medium=medium+gatc012&utmac=UA-30138-1&utmcc=__utma=97315849.1774621898.1207701397.1207701397.1207701397.1;...
变量 | 说明 | 示例值 |
utmac | 帐户字符串。在所有请求中显示。 | utmac=UA-2202604-2 |
utmcc | Cookie 值。此请求参数将发送从网页中请求的所有 Cookie。 | utmcc=__utma=117243.1695285.22;+ __utmz=117945243.1202416366.21.10. utmcsr=b| utmccn=(referral)| utmcmd=referral| utmcct=%2Fissue;+ |
utmcn | 开始一个新的广告系列会话。utmcn 或 utmcr 存在于任何给定请求中。更改广告系列跟踪数据;但不启动新会话。 | utmcn=1 |
utmcr | 指示重复的广告系列访问。当对相同链接进行后续点击时,系统就会设置该变量。utmcn 或 utmcr 存在于任何给定请求中。 | utmcr=1 |
utmcs | 浏览器的语言编码。有些浏览器不设置此变量,在这种情况下该变量将设置为“-”。 | utmcs=ISO-8859-1 |
utmdt | 网页标题,是一个网址编码字符串。 | utmdt=analytics page test |
utme | 可扩展参数 | 值已编码,用于事件和自定义变量。 |
utmfl | Flash 版本 | utmfl=9.0 r48& |
utmhn | 主机名,是一个网址编码字符串。 | utmhn=x343.gmodules.com |
utmipc | 产品代码。这是给定产品的 SKU 代码。 | utmipc=989898ajssi |
utmipn | 产品名,是一个网址编码字符串。 | utmipn=tee shirt |
utmipr | 单价。在物品级别设置。值为数字且仅使用美国货币格式。 | utmipr=17100.32 |
utmiqt | 数量。 | utmiqt=4 |
utmiva | 某个物品的不同版本。例如:大、中、小、粉红色、白色、黑色、绿色。字符串为网址编码。 | utmiva=red; |
utmje | 指示浏览器是否启用了 Java 支持。1 表示启用。 | utmje=1 |
utmn | 为每个 GIF 请求生成的唯一 ID,用于防止 GIF 图片缓存。 | utmn=1142651215 |
utmp | 当前网页的网页请求。 | utmp=/testDirectory/myPage.html |
utmr | 引荐,完整的网址。 | utmr=http://www.example.com/aboutUs/index.php?var=selected |
utmsc | 屏幕颜色深度 | utmsc=24-bit |
utmsr | 屏幕分辨率 | utmsr=2400x1920& |
utmt | 指示请求的类型,包括:事件、交易、物品或自定义变量。如果 GIF 请求中不存在此值,则请求的类型为网页。 | utmt=event |
utmtci | 帐单邮寄地址所在城市 | utmtci=San Diego |
utmtco | 帐单邮寄地址所在国家/地区 | utmtco=United Kingdom |
utmtid | 订单 ID,为网址编码字符串。 | utmtid=a2343898 |
utmtrg | 帐单邮寄地址所在区域,为网址编码字符串。 | utmtrg=New Brunswick |
utmtsp | 运费,单位和价格的值。 | utmtsp=23.95 |
utmtst | 关联企业。通常用于电子商务中的实体商户。 | utmtst=google mtv store |
utmtto | 总计。单位和价格的值。 | utmtto=334.56 |
utmttx | 税款。单位和价格的值。 | utmttx=29.16 |
utmul | 浏览器语言。 | utmul=pt-br |
utmwv | 跟踪代码版本 | utmwv=1 |
以上就是Google Analytics基本异步跟踪代码的运作原理啦,可能有点复杂,有什么疑问就给我留言吧,一定知无不言。