Google Analytics基本异步跟踪代码设置与运作原理

Google Analytics异步跟踪代码,以基本跟踪代码作为数据跟踪与传递的基础。在此基础之上,根据网站业务数据需求,您可以自定义设置跨域跟踪、添加直接流量站点、添加搜索引擎设置、事件跟踪、虚拟跟踪等功能。异步基本跟踪代码,作为数据跟踪与传递的基础,肩负着向Google Analytics服务器传递网站访客访问数据的重大责任.

知其然,才能知其所以然。了解了GA的运作原理,才能对其更好的运用,否则心里会老是有一块茫然(在我心里,就是这样的)。到底Google Analytics基本异步跟踪代码,是如何运作的呢,如何将我们网站访客的数据呈现在各类报告中的呢?本文将对其设置方法与运作原理做详细介绍。

基本设置

Analytics基本异步跟踪代码采用异步加载模式,js加载速度会更快,并且会自动判断访客浏览器中是否有ga.js的缓存文件,若存在则直接调用,一般对网页加载速度影响不大。如果你仍旧担心js文件会影响速度或发生冲突,那你可以考虑由全部放在改为以下方案,但一定程度上会降低数据的准确性(鱼和熊掌仍你选了)。
页面</head>标签之前添加

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

页面</body>标签之前,添加

<script type="text/javascript">
(function() {
var ga = document.createElement('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('script')[0]; s.parentNode.insertBefore(ga, s);
})();
< /script>

补充:另外,如果你的站点全部采用的是http协议或https安全协议(一般用于账号、密码等数据保密),那么可以跳过GA对协议的自动判断,直接调用对应的ga.js文件,即将ga.src的值改为ga.src = http://www.google-analytics.com/ga.js或https://www.google-analytics.com/ga.js。

原理说明

异步代码加载速度快、数据更准确的功劳都应归功于_gaq对象,它采用队列“先进先出”的数据结构,先按照先后顺序收集好各类命令及函数的API调用,以便ga.js加载完成后按照同样的顺序处理这些调用请求,即“谁先申请,先被收集,而后先被处理”。

图二:队列

图二:队列

Google Analytics API的调用

API调用时采用_gaq.push方法,将API调用申请推送到_gaq对象队列中被收集。而被推送收集的API调用包括:JavaScript命令数组、函数。其中,命令数组由被调用的跟踪器对象方法名称、传送给跟踪器对象方法的参数组成,也就是我们设置的各类定制跟踪,包括事件跟踪、跨域跟踪、添加搜索引擎等等。

推送命令数组(申请API调用)

_gaq.push(['setAccount', 'UA-XXXXX-X']);

推送函数(申请API调用)

_gaq.push(function() {
var pageTracker = _gat._getTrackerByName('myTracker');
var link = document.getElementById('my-link-id');
link.href = pageTracker._getLinkerUrl('http://example.com/');
});

_gaq跟踪器对象的创建

图三:_gaq对象及API调用

图三:_gaq对象及API调用

当页面中第一个命令数组以_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('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('script')[0]; s.parentNode.insertBefore(ga, s);
})();

Google Analytics数据传输日志

图四:Google Analytics访客Cookie参数

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=1280×1024&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=9.0%20%20r115&utmcn=1&utmdt=GATC012%20setting%20variables&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%3D97315849.1774621898.1207701397.1207701397.1207701397.1%3B…

Google Analytics utm.gif请求参数表

变量 说明 示例值
utmac 帐户字符串。在所有请求中显示。 utmac=UA-2202604-2
utmcc Cookie 值。此请求参数将发送从网页中请求的所有 Cookie。 utmcc=__utma%3D117243.1695285.22%3B%2B __utmz%3D117945243.1202416366.21.10. utmcsr%3Db%7C utmccn%3D(referral)%7C utmcmd%3Dreferral%7C utmcct%3D%252Fissue%3B%2B
utmcn 开始一个新的广告系列会话。utmcn 或 utmcr 存在于任何给定请求中。更改广告系列跟踪数据;但不启动新会话。 utmcn=1
utmcr 指示重复的广告系列访问。当对相同链接进行后续点击时,系统就会设置该变量。utmcn 或 utmcr 存在于任何给定请求中。 utmcr=1
utmcs 浏览器的语言编码。有些浏览器不设置此变量,在这种情况下该变量将设置为“-”。 utmcs=ISO-8859-1
utmdt 网页标题,是一个网址编码字符串。 utmdt=analytics%20page%20test
utme 可扩展参数 值已编码,用于事件和自定义变量。
utmfl Flash 版本 utmfl=9.0%20r48&
utmhn 主机名,是一个网址编码字符串。 utmhn=x343.gmodules.com
     
utmipc 产品代码。这是给定产品的 SKU 代码。 utmipc=989898ajssi
     
utmipn 产品名,是一个网址编码字符串。 utmipn=tee%20shirt
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=2400×1920&
utmt 指示请求的类型,包括:事件、交易、物品或自定义变量。如果 GIF 请求中不存在此值,则请求的类型为网页。 utmt=event
utmtci 帐单邮寄地址所在城市 utmtci=San%20Diego
utmtco 帐单邮寄地址所在国家/地区 utmtco=United%20Kingdom
utmtid 订单 ID,为网址编码字符串。 utmtid=a2343898
utmtrg 帐单邮寄地址所在区域,为网址编码字符串。 utmtrg=New%20Brunswick
utmtsp 运费,单位和价格的值。 utmtsp=23.95
utmtst 关联企业。通常用于电子商务中的实体商户。 utmtst=google%20mtv%20store
utmtto 总计。单位和价格的值。 utmtto=334.56
utmttx 税款。单位和价格的值。 utmttx=29.16
utmul 浏览器语言。 utmul=pt-br
utmwv 跟踪代码版本 utmwv=1

以上就是Google Analytics基本异步跟踪代码的运作原理,可能有点复杂,有什么疑问就给我留言吧,一定知无不言

有话要说