存档

文章标签 ‘谷歌分析’

GA _gaq _gat的两种嵌入方式详解

2010年8月18日 Robbins 没有评论

 

GA tag支持两种嵌入方式:同步嵌入和异步嵌入,下面分别讲解一下两种不同的嵌入方式的区别和不同的应用场景

 

同步嵌入

同步嵌入的代码如下:

 

<script type=”text/javascript”>

var gaJsHost = ((“https:” == document.location.protocol) ? “https://ssl.” : “http://www.”);

document.write(unescape(“%3Cscript src=’” + gaJsHost + “google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E”));

</script>

 

<script type=”text/javascript”>

try {

var pageTracker = _gat._getTracker(“UA-12684530-1″);

pageTracker._trackPageview();

} catch(err) {}</script>

 

异步嵌入

异步嵌入的代码如下:

 

<script type=”text/javascript”>

var _gaq = _gaq || [];

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

_gaq.push(['_trackPageview']);

 

(function() {

var ga = document.createElement(’script’);

ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;

ga.setAttribute(‘async’, ‘true’);

document.documentElement.firstChild.appendChild(ga);

})();

</script>

 

同步的track代码调用很简单也很直白,通过_gat对象的_getTracker(“UA-12684530-1″)方法调用创建了一个pageTracker的对象,然后在trackEvent或tracsaction甚至设置customVariable的时候,直接使用pageTracker对象调用相应的方法就可以了。

 

如: pageTracker._trackEvent, pageTracker.——setCutomVar, pageTracker._trackPageView

 

但是,异步的track代码调用就不那么直白了。在解释如何进行异步的track的时候,我们需要看看借个GA对象的来龙去脉:

 

_gat

GA tag里面定义了一个字符串:var gaTrackerName = “_gat”, 然后通过window[gaTrackerName] = Z把_gat变成了window对象下的一个全局子对象。ok, 这个时候你看到了有趣的东西: Z. 这个是GA tag混淆后的缩写,原来Google的开发人员叫它啥,我们就不知道了,但是,我们看看Z这个对象里面都有啥吧:

 

一个至关重要的方法:Z._getTracker = function(i, l) {

return new Z.Tracker(i, l)

};

10个子对象。10个对象就不一一列举,但是有2个不能不看:Z.Tracker 和 Z.GlobalVariables

至此,你大致可以明了,Z这个东西就是定义了GA tag所有功能函数的一个类,而_gat就是它的一个实例了。

 

_gaq

同样的,GA tag里面也定义了一个变量:var ba = “_gaq”, 但是把_gaq转换成window下的一个全局对象就略显复杂一些:

 

首先,GA tag初始化的时候会调用一个叫na的方法:

 

function na() {

var i = window[ba],

l = false;

if (i && typeof i.push == “function”) {

l = i.constructor == Array;

if (!l) return

}

window[ba] = $;

l && $.push.apply($, i)

}

 

好吧,你看到了,window[ba] = $, 这样,_gaq就变成了$这个对象,这个对象是GA里定义的和Z同级的全局对象,让我们看看它的定义吧:

 

$ = {

ca: {},

_createAsyncTracker: function(i, l) {…},

_getAsyncTracker: function(i) {

i = i || “”;

var l = $.ca[i];

if (!l) {

l = new Z.Tracker;

$.ca[i] = l;

ka = true

}

return l

},

push: function() {

for (var i = arguments,

l = 0,

g = 0; g < i[x]; g++) try {

if (typeof i[g] === “function”) i[g]();

else {

var t = “”,

k = i[g][0],

p = k.lastIndexOf(“.”);

if (p > 0) {

t = O(k, 0, p);

k = O(k, p + 1)

}

var f = $._getAsyncTracker(t);

f[k].apply(f, i[g].slice(1))

}

} catch(h) {

l++

}

return l

}

};

 

看到了,$这个东东有3个方法:push, _getAsyncTracker,和_createAsyncTracker(这里省略了实现)。这里引出了一个对于异步tag嵌入最最重要的方法: push。所谓异步调用,无非就是把tag的加载和tag的track调用分离,那么看到push的方法实现你就明白了该如何使用这个异步调用的tag了。让我们来点实际的调用代码看看:

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

_gaq.push(['_setClientInfo', false]);

_gaq.push(['_setAllowHash', false]);

_gaq.push(['_setDetectFlash', false]);

_gaq.push(['_setDetectTitle', false]);

_gaq.push(['_trackPageview']);

_gaq.push(function() {

var pageTracker = _gaq._createAsyncTracker(‘UA-XXXXX-1′);

pageTracker._trackPageview();

 

var pageTrackerB = _gaq._createAsyncTracker(‘UA-XXXXX-2′,’b');

pageTrackerB._trackPageview();

});

GA tag没有加载的时候,_gaq是一个数组,你push进去的东西会存储起来直到tag加载。当tag加载之后,na方法将被调用:

 

var i = window[ba],//数组里面的值赋给了i

$.push.apply($, i)//解析并执行push到数组里的方法

前面说完了技术实现的不同,很明显,异步的tag调用要更复杂一点,那么Goolge提供异步嵌入的目的在哪呢? 异步的嵌入方式相比同步的嵌入方式主要有下面的好处:

 

tag 无需同步加载,不会阻塞浏览器处理整个页面DOM的过程,可以加快页面的加载速度

所有的函数都是先push进数组缓存起来,待GA 的tag完整加载后执行,将会避免因GA tag加载无法完成而导致客户端页面出错的状况发生。想象一下,在同步嵌入的方式下,如果GAtag的下载失败了(网络抖了一下或其他原因),后续的var pageTracker = _gat._getTracker(“UA-12684530-1″);必定失败,那么,如果你在其他地方调用pageTacker的方法如:pageTacker._trackEvent,必定会出现javascript错误,严重时可能导致表单无法提交或者视频广告无法播放。

分类: 网站分析 标签:

Google analytics 退出率 跳出率 二跳率概念理解

2010年7月17日 Robbins 1 条评论

Google analytics 的跳出率与退出率其实这两个比较区分,对于二跳率估计平时用的比较少。这些指标是衡量网站的用户深度的重要指标,有助于我们评估网站的用户体验和广告效果。下面就这些基本度量单位分享下我自己的理解。

 

1、跳出率

跳出率是指仅浏览了该页面就离开网站的用户比例。参考:Google的解释

例如,100个人进入该页面,5个人直接从该页面离开该网站,则跳出率为5%。

跳出率可以很直观的看出网站对用户的黏性,和用户体验的好坏。当然我们应对具体的网站和具体的页面做具体的分析,不同类型的网站或页面他们的跳出率是有很大的差别。如购物成功后返回的感谢页面跳出率往往都很高,这不能说明该页面有问题。博客网站和sns网站的跳出率也不同。

2、退出率

退出率是指从该进入页面离开网站的次数占该网页总浏览次数的比例。

例如,20个人从该页面离开网站,该页面的总浏览量为200次,则退出率为10%。

从图中我们可以看出跳出率与退出率是息息相关的,页面的跳出率越高退出率也会越高。退出率包含跳出率的那一部分。那么可以思考一下用(退出率-跳出率)也就是用户至少访问了2个或2个以上的页面离开了网站所占得比例。

 

3、二跳率

当用户从外部链接到达网站时,被称为第一次跳转,如果用户再点击某一链接或按钮从而进入网站深层页面,则被称为“二跳”,外部来的用户中进行了二跳的用户的比例被称为“二跳率”。例如,上图中100人进入网站,85人浏览了更多页面,则“二跳率”为85%。

Google Analytics cookie 内容详解

2010年7月6日 Robbins 1 条评论

今天看了一篇不错的网站分析的关于ga 的文章,特转载过来与大家一起分享。
在WiKi上的解释是:指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

分为两种类型,第一方和第三方。Google Analytics使用第一方

Google Analytics设置了5个不同的,_utma, _utmb, _utmc, _utmz和 _utmz。分别用来存储不同的信息。所有的统一使用_u-t-m开头,所以我们看到这三个字母就知道是google的

下面逐个介绍Google Analytics的和功能。

_utma的主要功能:识别唯一身份访客

_utma的生存周期为2年。其中第二组的随机唯一ID和第三组的时间戳联合组成了访问者ID,Google Analytics通过这个ID来辨别网站的唯一访问者。而后面的几个时间戳用户计算网站停留时间和访问次数。

_utma 存储的内容:127635166.1360367272.1264374807.1264374807.1264374807.1
第一组数字被叫做“域哈希”,是GA表示这个域的唯一代码。同一域中每个的第一组数据都是“域哈希”,并且值都是一样的。
第二组数字是一个随机产生的唯一ID。
第三,四,五组数字是时间戳,其中第三组数字表示初次访问的时间。第四组数字表示上一次访问的时间,第五组数字表示本次访问开始的时间。
第六组数字是访问次数计数器。这个数字随着访问次数的增加而增加。
PS:上面的三个时间戳数字相同,并且最后的访问次数计数器是1,表示这是第一次访问。

_utmb的主要功能:和_utmc一起决定访客的Session

_utmb的生存周期为30分钟,当访问者在你的网站持续30分钟静止时,utmb将被删除。Google Analytics使用_utmb 和_utmc一起辨别一个session。

_utmb 存储的内容:127635166.2.10.1264374807
第一组数字和_utma一样,是“域哈希”。
后面的几组数字是一些附加值。

_utmc的主要功能:和_utmb一起决定访客的Session

_utmc是一个临时,当用户关闭浏览器时_utmc将一起被删除

_utmc和_utmb一起来识别一个session,当用户访问一个网站时,Google Analytics会检查这两个,如果缺少其中任何一个,Google Analytics都将认为这是一个新的session。
_utmc的内容:127635166 代表“域哈希”。

_utmz的主要功能:存储流量来源信息和链接标记的变量值。

_utmz的生存周期是6个月,_utmz中存储了所有流量的来源信息。
_utmz的内容中一共有4组数字:127635166.1264374807.1.1
第一组数字是“域哈希”。
第二组数字是时间戳。
第三组数字是session number。
第四组数字是campaign number 记录通过不同来源访问网站的次数。
utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
这些信息代表流量的来源,因为我是直接输入域名直接访问的,所以来源和媒介都是direct

_utmv的主要功能:自定义访问者的属性。

_utmz的生存周期是2年,存储通过_setVar()自定义用户属性。
_utmz的内容:127635166.user
第一组数字是“域哈希”。
第二个值user是通过_setVar()设置的用户属性。
PS:_utmv只有在调用了_setVar()时才会出现。
此外,还有两个 __utmx和__utmxx。这两个不是由Google Analytics设置的,而是由Google的Website Optimizer用来做A/B测试或多变量测试用的。如果在访问某个页面后看到这两个,那就说明这个页面正在进行页面优化测试,而你访问的页面可能是测试中的某一个版本。

原文地址:(http://bluewhale.cc/2010-01-24/google-analytics-.html)作者:蓝鲸

google analytics 其他一些基本度量

2010年7月4日 Robbins 1 条评论

Average Pageviews
平均页面浏览数,是指在每次访问(Visit)中,平均有多少个页面被浏览了。也就是说,Average Pageviews = Pageviews / Visits。这个量度是通过两个基本量度计算得到的。平均页面浏览数,可以反映出网站的粘度。一般的来说,这个量度越大,说明网站的结构越清晰,内容越 吸引人。如果这个量度接近于1,那么,绝大部分的访问者,到了这个网站,只看了第一页就离开了。要么是内容糟糕透了,访客看了第一眼就不想看第二眼,要么 就是网站结构太差,访客找不到继续下去的链接。

Time on Site
Time on Site,顾名思义,就是访客在网站上花费的时间(注意是访客而不是一次访问,想想中间的区别)。这个时间是怎么得到的呢?比如,当一个访客在1:00的 时候到达了页面1,过了一会,在1:05的时候又到达了页面2,在1:12的时候到了页面3,在页面3上停留了一会,于1:16关闭浏览器结束了访问。那 么,数据采集服务器在1:00接收到数据,知道一个访客来了;1:05的时候又收到一次数据,那么1:05-1:00,呵呵,这个访客在网站上呆了5分 钟;1:12的时候收到数据,那么这个访客已经呆了12分钟了。但是注意了,用户离开关闭浏览器,并不会发送数据给采集服务器,那么页面3上的停留时间是 得不到的。在报表中看到Time on Site这个量度,实际是除了最后一个页面以外,前面所有页面的停留时间。一般的,Time on Site越长,说明网站的粘度越强。不过也有例外,Google就希望Time on Site越短越好,Time on Site越短,说明用户越快找到了他要的网站。

Bounce Rate
Bounce Rate,中文是跳出率,一般是用来衡量网站推广效果的一个量度。跳出率也是通过基本量度计算得到的,Bounce Rate = Single Access / Entries。其中,Single Access是指只访问了这个页面就离开的次数,Entries是访问者从这个页面进入网站的次数,也就是说这个页面是这次访问的第一个页面。 Single Access、Entries、Bounce Rate都是针对页面的量度。跳出率主要针对首页和登陆页。什么是登陆页呢?登陆页不是登录页,英文叫“Landing Page”,是指广告链接到网站的那一页。首页和登陆页是网站的入口,占据了网站绝大部分的Entries。Bounce Rate是用来衡量广告推广的效果。Bounce Rate越高,说明越多的访客到达第一个网页就离开了,那广告推广的效果就比较差,因为没有多少访客留下来。

New Visit
New Visit是统计的新的访问的数量。如何区别新的访问呢?Absolute Unique Visitor那一节,当浏览器中没有的时候,访问网站,一定时间内就会被认为是新的访问。这个主要用来衡量吸引到新用户的数量。

google analytics 基本度量 UV

2010年7月4日 Robbins 没有评论

上次我写了关键谷歌分析工具中的基本度量单位 访问次数(visit),今天来讲将谷歌的另外一个重要的度量单位唯一独立访问者(Absolute Unique Visitor)我们通畅称之为UV,谷歌为了让统计更为得准确更接近事实采用了的形式来作为UV统计的依据,UV是和客户端的是共存的关系,只要不删除那么UV都不会增加。Vistors,即分配的数,
一个算一个vistor,在vistor在,变vistor变,所以如果你清理电脑的后,再次访问网 站,算一个新的vistor。大家可以思考一个问题网吧等公场所都是多个客户端公用一个公用IP。UV是怎么计算的呢?IP又是怎么算?如果有个很无聊的人访问网站期间不停的清除cookies 又不停的访问改网站。UV与PV怎么计算的?