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基本异步跟踪代码的运作原理啦,可能有点复杂,有什么疑问就给我留言吧,一定知无不言。
2012年07月30日 06:27
This piece of writing will assist the internet users for setting up new blog or even a weblog from start to end.
2012年02月10日 07:29
Hey very nice website!! Man .. Beautiful .. Amazing .. I will bookmark your website and take the feeds also…I am happy to find a lot of useful info here in the post, we need work out more techniques in this regard, thanks for sharing. . . . . .
2012年01月15日 22:41
First of all, allow my family enjoy a person’s command during this matter. Even though this is certainly brand new , nevertheless soon after registering your site, this intellect has exploded extensively. Allow all of us to take hold of one’s rss to help keep in touch with at all probable messages Sincere understand but will pass it on to help admirers and my personal are living members
2012年01月29日 22:48
Extremely hpleufl article, please write more.
2012年02月01日 10:43
Holy concise data bamtan. Lol!
2011年12月29日 04:40
强大!
2012年01月29日 23:43
To think, I was conufsed a minute ago.
2012年02月01日 12:50
You really saved my skin with this ifnoarmiton. Thanks!