月度归档:2012 年七月

GA中网站速度的度量与分析

很多文章都会说到网站速度对于用户转化的影响,速度慢的网站用户更容易离开,尤其是可以找到替代内容的情况下。

那么如何度量网站的加载速度呢,之前大家的做法是在页面的头部记一下时间:var start = new Date().getTime(),然后在页脚计算一下用掉的时间:var timeUse = new Date().getTime() – start,把这儿的timeUse用事件的方式提交到GA服务器:_gaq.push(['_trackEvent', 'timeUse', '/home.html', 'load', timeUse]),最后在GA的事件列表,看事件的平均值来评价页面的加载时间。

这样做,可以获得加载时间,但不完整,完整的页面加载是这样的:

1用户打开url链接
2 浏览器查询url的dns地址
3 提交url请求到服务器端
4 服务器端处理
5 传输处理好的html文本内容到浏览器
6 浏览器解析html,并加载css,js,图片等内容
7 加载完成,用户看到完整的页面内容

前面的timeUse获取的其实是第6步操作的用时,2到5步的用时都无法获取,假设某个网站的dns查询慢,服务器端处理慢,还是会影响用户的体验,而这个是我们无法度量的。

其实dns查询,等待服务器处理等时间,作为浏览器是知道的,于是HTML5规范为这部分的查询,提供了接口,允许javascript来查询详细的用时,具体文档在这儿:https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html#sec-navigation-timing-interface,调用的例子见这儿:http://www.html5rocks.com/en/tutorials/webperformance/basics/,假设我们要获取当前页面的dns解析时间,只要:performance.timing.domainLookupEnd – performance.timing.domainLookupStart即可,目前支持该接口的浏览器有:firefox,chrome,IE9等对html5标准支持较好的浏览器。我实际看了一下我们站点的统计,firefox/chrome/IE9浏览器共占 38% 这样,不同类型网站因为用户群不同,这个比例会有差别。速度值可以作为参考,如果Chrome加载一个页面特别慢,可以认为IE6也快不到那里去,就该着手优化了。

作为与时俱进的GA分析,当然要使用更好的度量方式的,于是你可以在网站->网站速度报表处看你的站点的详细加载时间,包括:网页的平均加载时间,重定向,dns查询,服务器端处理等时间,在网页计时(Page Timings)列表,可以按页面看平均加载时间。

如果选择了一个时间段,点击具体的页面,如:/home页,还可以看一下这个页面在这段时间的加载速度变化。

看过统计学的朋友都知道平均值是靠不住的,假设有10个用户,9个加载速度是1秒,一个是191秒,这时得到的平均加载时间是:20秒,很显然这儿的20秒是没有意义的,我们需要看明细,GA考虑到了这个问题,支持在报表页点击:效果(Performance)标签,查看明细的信息:

从这个图上,我们可以知道大多数用户的加载时间在10秒左右,少部分用户特别慢,超过了20秒,整体速度可以接受。

在网页计时(Page Timings)列表页我们可以找出加载慢的页面,有针对性的优化。

当然在中国的网络环境下,网页加载速度还受所在城市,网络运营商等因素影响,这时可以按城市,页面加载时间,配置一个自定义报告:

效果如下:

而网络运营商对于网站加载速度的影响,要用细分来做,目前中国主要运营商有:电信和联通,分别占据南北市场,电信的服务器提供商名会包含:chinanet,联通会包含:unicom,以电信为例,新建一个细分:

还是刚才的/home页,我们这时就可以按运营商来比较页面加载速度了:

这时我们可以看出联通的页面加载速度要比电信慢很多,这时就应该考虑使用CDN加速了,毕竟16秒还是太慢了。

影响网页加载时间的因素有很多,除了运营商,带宽等,如果是sns类的站点,同样的home页,不同用户看到的内容其实不一样的,如:某个活跃用户加入的小组多,好友多,这时他加载home页自然会速度慢,如果要详细的分析这部分用户慢的原因,可以把用户ID传到自定义变量里,按用户ID看加载时间。

对于GA的网站速度报表,默认情况下是不需要额外配置的,GA在统计页面时,会按1%的抽样比例,提交页面的加载时间,如果你的站点访问量比较小,可以通过:

_gaq.push(['_setSiteSpeedSampleRate', 20]),来调整整体的抽样比例,或者对于重要的页面,指定更高的抽样比例。

在有了网页加载时间的数据后,就可以分析比较加载速度对跳出率,转化的影响了,但我实际尝试做的时候,却发现没有现成的指标,或维度来让你筛选,我的想法是用页面级自定义变量来标记, key是speed,value是slow, fast,5秒以下算fast,超过5秒算slow,具体的操作,我后继会补充 :)

小结

网站速度的度量不管对于网站开发,还是网站分析都有重要的意义,通过改进网站速度,我们可以提高用户体验,降低跳出率,提高转化率,而这一切都是可以观察量化的 :)

 

桌面客户端程序的GA统计

和网站类似,我们也希望知道桌面客户端程序的访问情况,这儿的桌面客户端开发语言可能是:C++, Delphi,.net。

假设有一个视频下载及播放的客户端程序,我们需要知道,每天的登录次数,下载次数,播放次数,还想知道下载、播放最多的视频名称列表。

简单的做法是,登录时,往服务器端提交一个数据包,参数为:用户名,下载时,提交:视频名称,用户名。服务器端记录提交的数据,并编写相应的后台报表,用来展现访问情况,附加的,还要做权限管理,报表导出,邮件通知等功能,工作量可真不小。

如果把客户端程序的操作看着页面访问,那么对应的页面的标题和地址会是这样:

用户登录 – tom (/login/tom)
视频下载 – 海绵宝宝第一集(/download/海绵宝宝第一集/tom)
视频播放 -海绵宝宝第一集(/play/海绵宝宝第一集/tom)

基本的数据提交到GA后,就可以按标题和路径,筛选登录的次数,下载,播放最多的视频名称了,权限管理,图表展现也不在话下。

这时大家要问了,客户端程序模拟ga.js数据提交可不是一件简单的事情,而且每种开发语言还得写一遍,工作量一点都不小啊。

其实有一种简单的方法,就是客户端程序做一个隐藏的窗口,在这个隐藏的窗口嵌一个浏览器,windows下就是IE浏览器了,当有操作发生时,这儿的隐藏浏览器转到响应的页面地址,就像这样:
http://www.mysite.com/track.html?action=login&username=tom&title=用户登录 – tom
http://www.mysite.com/track. html?action=download&username=tom&video=海绵宝宝第一集&title=视频下载 – 海绵宝宝第一集
http://www.mysite.com/track. html?action=play&username=tom&video=海绵宝宝第一集&title=视频播放 – 海绵宝宝第一集

track.html页面的代码:
<script type=”text/javascript” src=”js/jquery-1.4.1.min.js”></script>
<script type=”text/javascript” src=”js/jquery.url.js”></script>
<script type=”text/javascript”>
    var p = $.url().param();
    var action = p.action;
    var path = “”;
    if (action) {
        switch (action) {
            case “login”:
                path = “/login/” + p.username;
                break;

            case “download”:
                path = “/download/” + p.video + “/” + p.username;
                break;

            case “play”:
                path = “/play/” + p.video + “/” + p.username;
                break;
        }

        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-XXXXXX-1']);
        _gaq.push(
            function () { document.title = p.title;},                
            ['_trackPageview', path]
        );
    }
</script>
<script type=”text/javascript” src=”http://www.google-analytics.com/ga.js”></script>

这儿用到了jquery.url.js用来获取url中的参数,下载地址在:https://github.com/allmarkedup/jQuery-URL-Parser

GA的账号添加和报表配置就不详解了,本文主要是给大家一个思路,实际使用时,还需要注意以下的一些问题:

1 客户端程序的Session过期时间,网页是半小时,客户端可以长一些,如2小时:_gaq.push(['_setSessionCookieTimeout', 120 * 60 * 1000]);
2 客户端程序需要关注程序版本,这儿的程序版本,可以通过用户变量设置:_gaq.push(['_setCustomVar', 2, 'ver', p.ver, 2]);
3 客户端程序需要知道:操作系统,屏幕尺寸等信息,这部分直接读GA报表里的:Browser & OS 即可,不需要自己做
4 除了TrackPageview方式,其实用事件来记录客户端的操作,也蛮方便的,方便筛选
5 隐藏的浏览器,传递参数时,要有个random参数,保证浏览器强制刷新

小结:
GA统计功能强大,定制方便,如果没有太特别的需求,桌面客户端用GA统计不仅代码修改量小,而且定制性也很好,值得一试。

 

 

衡量访问量的基本指标选择

在看GA的流量信息时,你会发现标准报表会选择不同的指标来反映流量信息。

所有页面报表是:浏览量,唯一身份浏览量。
引荐,关键字报表是:访问次数,每次访问的网页浏览量

这儿的唯一身份浏览量,简单的讲,就是在一次访问中,去掉重复后的页面浏览量,假设张三上午来到你的网站,依次访问了:home, article_12, home, article_15这几个页面,那么他的总PV是4,唯一身份浏览量是:3,即home页只算一次。

对于所有页面,我们会关注基本的浏览情况,所以用浏览量比较合适。

对于引荐和关键字,我们会关注带来多少次访问,以及每次访问的平均网页浏览量,停留时间,跳出率等信息。

这时如果单纯的看PV则容易误导,举个例子,假设某个关键字,因为SEO做的好,带来了大量的访问,但因为关键字和网页的内容不相关,大多数用户只看了一个页面就离开,既不会访问网站的其他内容,也不会产生潜在的购买,则这个关键字对我们的就没有意义。

除了:浏览量,访问次数外,唯一身份访问者也是一个很重要的指标,当我们有一个销售专题时,我们会关心有多少人访问了这个专题的相关页面,这时就可以选择:唯一身份访问者指标。

从数量上看:
浏览量 > 唯一身份浏览量 > 访问数 > 唯一身份访问者

熟悉了这3个基本的指标后,我们就可以有针对性的创建自定义报告了,以观察比较流量。

补充一下joegh的看法,比我想的更深入:

其实页面层级的Unique Pageviews跟Visits是同一个意思,只是GA认为页面层级不应该有访问这个度量存在。GA弱化UV的一个原因是UV不能在不同维度层级直接汇总,需要去重,所以在下钻和向上聚合中计算不方便,而且“量”的层面Visits也可以很好地体现
但貌似国内还是很喜欢用用户数来体现网站的价值。

 

 

GA代码定制:_TrackPageview时指定页面标题

大家都知道可以用_TrackPageview来提交一个虚拟页面请求,例如有一个商品列表页,当点击购买时,因为是Ajax回调,其实并没有产生页面跳转,这时可以在onClick事件里这样写:
_gaq.push([ "_TrackPageview", "/pruduct/10032/buy_succ"]);

但这样有个小问题,提交到GA服务器的页面标题,还是这个列表页的标题,而不是我们希望的:商品名称 – 购买成功。要想指定虚拟页面的标题,做法很简单,在TrackPageview前,先改变一下页面的标题,提交后,再恢复原有标题:

_gaq.push (
function() {old_title = document.title; document.title = “商品名称 – 购买成功”},
[ "_trackPageview", "/pruduct/10032/buy_succ"],
function() {document.title = old_title}
)

这儿用到了_gaq的push方法的特点,如果是push一个函数,则会按顺序,依次调用指定的函数。

 

从论坛看站点的GA部署与分析

不同类型的站点会有不同的关注点和目标,如电子商务站点和个人博客的关注点就差别很大,前者关注流量来源,渠道路径,目标转化,后者会关心:搜索引擎关键字,平均PV,停留时间。

GA是一个通用型的工具,针对不同类型的站点,你需要规划站点结构,配置:站内搜索,事件,目标。为了更好的分析,还需要细分,和自定义报表。这对于一般的论坛站长还真是有点难度,或者是不太可能完成的任务,这个时候,你就应该使用:腾讯分析(ta.qq.com)了。腾讯分析是针对Discuz!论坛量身打造的分析工具,除了基本的流量数据外,还集成了和论坛相关的业务数据和指标。

以腾讯分析的Demo站点为例(ta.qq.com/summary/index?sId=2938105),进入首页,你会看到这样的界面:

这样对论坛来讲,最重要的2个指标就可以清楚的看到了,还可以和基本的流量指标如:PV做对比。

在左侧的报表列表中,还有:热门板块和热门主题等和论坛业务相关的报表,以热门板块为例:

你可以按:PV,访客,发帖,回复等排序,找出:看的最多的板块,活跃度最高(发帖,回复最多)的板块。还可以按访客类型来细分,如:看游客访问的最多的板块。

在腾讯分析里,还有:会员参与度的报表,按日期列出:参与人数和参与度,这儿的参与人数是:当天有发帖的会员数量,参与度是:当天的参与人数占当日访问的会员人数的比例。通过这样的定义,可以方便的看出论坛的活跃度。

总体来讲,腾讯分析是一个功能完整,使用方便的工具,和Discuz!论坛深度集成。好处是:方便使用。缺点是:无法扩展,无法应用到其他论坛。对于非论坛站点,可以用,但很多报表与指标又会显得多余。当然这和腾讯分析的产品定位有关。

好了,我们看看在GA里,如何分析论坛的流量。

业务分析:

  • 用户类型:会员,游客。
  • 内容:板块,主题
  • 用户行为:注册,发帖,回复
  • 关注:访问最多的板块帖子,发帖最多的板块,回复最多的帖子,用户在论坛里搜索最多的关键字,带来最多注册的来源。

配置部署:

  • 检查站点的整体url结构,假设是一个外语论坛的cet板块的一个帖子,我们希望url结构是:/cet/topic/1234,这样可以方便按目录,筛选板块的流量。
  • 检查标题,页面的标题应该为帖子的标题,这样在ga的报表里可以方便的按页面标题看访问最多的帖子。
  • 检查站内搜索的url参数:如搜索:考试,url路径最好是:/search/?cate=cet&q=考试,这样可以方便的在GA里配置站内搜索参数。
  • 这部分配置,可以考虑作为规范,要求开发人员在做新站点时,遵循这样的规范,即让站点结构适合网站分析。

用户变量,事件,目标:

为了区分用户类型,我们要指定用户变量,这儿的自定义变量作用域,按:session级即可。

_gaq.push(['_setCustomVar', 1, 'user_type', 'member', 2]);
_gaq.push(['_setCustomVar', 1, 'user_type', 'guest', 2]);

为了记录:发帖,回复操作,需要记录事件:

_gaq.push(['_trackEvent', 'reg_用户注册(categorie)', '用户名(action) '])
_gaq.push(['_trackEvent', 'cate_板块名称(categorie)', '发帖 (action)', '帖子标题(label)'])
_gaq.push(['_trackEvent', 'cate_板块名称(categorie)', '回帖 (action)', '帖子标题(label)'])

在目标里,需要指定这儿的三种类型的事件,分别为:reg, topic_new,topic_reply,根据这三种目标对你的重要性,指定目标价值,如:reg为10元,topic_new为5元,topic _reply为5元。

细分,自定义报表:

按user_type作为维度来细分,看会员和游客的:平均PV,平均停留时间,访问最多的页面等信息。

按触发了:发帖,回帖事件的访问细分,看活跃用户的访问习惯。

按站内搜索的关键字,看论坛用户想找的内容。

按:user_type,Page path level 1为维度,Pageviews,Bounce Rate,topic_new(Goal1 Completions),topic_reply(Goal2 Completions)为指标设计自定义报表,依次看:会员和访客,各个板块的PV,跳出率,发帖数,回复数等信息。

按:source为维度,Visits,Bounce Rate,reg(Goal3 Completions),reg(Goal3 Conversion Rate) 为指标设计自定义报表,看:各个来源的访问数,跳出率,注册人数,注册人数的比例,来分析哪个来源带来了最多的注册。

小结:

在有了良好的网站结构,区分了用户类型,记录了用户事件,指定了目标的基础上,如何细分,如何做自定义报表,就是一件很容易的事情了,可以根据业务需要,添加更多的报表,还可以定时发邮件,如:访问最多的帖子,站内搜索关键字,给相关的编辑运营人员。

完整的网站分析既有业务分析,也有技术实施的工作,前者需要熟悉业务,后者需要熟悉GA的功能,知道相关的分析如何在GA里设置和表现。论坛的网站分析,还是比较清晰的,如果分析电子商务站点,web2站点,则更为复杂,需要更多的摸索和学习,后面如果有新的收获,我会及时和大家分享的 :)。

 

 

移动应用统计的特点与注意点

移动应用的访问统计与传统网站的访问统计既有相同点,又有不同点,总体来讲,关注的方向是一致的:了解用户的使用情况。

相同点:

  • 用户量:总的唯一访客数,新老用户比例,每日(每周,每月)新增用户量
  • 使用情况:访问次数,每次访问的时长,每次访问的浏览量
  • 流量来源:用户来源
  • 事件与目标转化: 特定事件的次数与数值,注册,购买等转化情况

不同点:

  • 版本的概念:需要统计不同版本的用户量访问情况,需要统计老版本的升级情况,如:每天有多少V1.0用户升级到v2.0
  • 渠道的概念:需要知道不同电子市场的下载量
  • 应用内购买:需要知道内置购买的销售情况
  • 数据记录提交方式的区别:网站是通过js脚本统计,而移动应用是通过打包组件的方式统计。网站是即时提交,移动应用要考虑网络环境,需要支持批量提交,或指定在wifi环境才提交

移动应用会特别关注的数据:

  • 设备(ipad,iphone,itouch,android的各种硬件)
  • 分辨率
  • 操作系统
  • 网络运营商:3G,WAP,电信,网通

目前的移动应用统计工具有2类:

  1. 通用型,用网站统计工具来分析移动应用的访问,如:Google Analytics
  2. 专用型,只做移动应用的统计
    国内的:友盟(www.umeng.com),百度移动统计(mtj.baidu.com),CNZZ移动统计(mobile.cnzz.com
    国外的:flurry(www.flurry.com/product/analytics/index.html),apsalar(apsalar.com

通用型工具的好处是:网站,移动应用通吃,原有的网站分析经验可以沿用。

缺点也很明显:

  1. 一些报表,维度,指标,移动应用根本用不到,都放在一起,界面很庞杂
  2. 移动应用的一些特有的数据指标要用网站统计的名词来描述,有时会很别扭

当然google是知道这个问题的,最近正在测试针对移动应用的统计工具,详细介绍见:http://www.36kr.com/p/123482.html,申请地址在这儿:https://services.google.com/fb/forms/mobileappanalyticsbeta/

专用型工具基本上都差不多,国内做的比较好的有友盟统计,除了针对移动应用分类清楚的报表外,还有:错误信息统计,用户反馈统计,与行业数据比较等功能。

移动应用的统计部署准备:

  1. 明确应用的特点:带来注册,更多的内置购买,还是免费,做品牌推广
  2. 规划要统计的事件,如:点击播放,点击下载
  3. 规划目标转化:如注册流程,定义好步骤,以便分析各个步骤的跳出率
  4. 明确数据提交的方式:启动时提交,即时提交,批量提交,wifi情况下提交