如何使用Google Analytics统计网页加载时长?

分析的需求是无穷尽的。每当我打开老王的那满是图片的博客时,我就想:大部分访问者的打开时长是多少?有多少访问者是因为打开时间过长而走掉的了?现在大家都在讨论用户体验,如果让你的上帝在刷个页面上花时间都发个微博都长,那人家走你都不好意思说啥:).

有需求就有解决方案,要看到你的网站表现如何,得先有事实数据说话才可以,现在整理下GA中统计页面加载时间方法:

GA的官方解决方案

5月初,Google官方推出新版GA的一个新报告:页面加载时间分析。打开新版GA的“内容”栏目,你可以有个一个“网站速度”报告。如下图所示:

report-1

但是这个报告不是默认生成的,需要对你网页中的GATC,做一下修改增加_tackPageLoadTime()函数,如下所示(本示例为异步GATC脚本):

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXX-1']);
  _gaq.push(['_trackPageview']);
  _gaq.push(['_trackPageLoadTime']);
  (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>

更多说明请点击访问正统的GA help:Site Speed

官方方案的问题在于这个数据是抽样统计,我在5月初兴匆匆的为我的博客更新了代码,但是等了10多天了还是没有数据,开始我以为是我的配置有问题,后来在网上搜索了下,发现有人反馈这个抽样的频率不高,我这种小博客没几个人访问的,居然这段时间没有一条数据(汗颜,虽然这段时间只有20多个pv,但好歹给我显示一条嘛——昨晚我折腾到2点排查问题)。

非官方方案

使用事件跟踪

在网上看到Rob Kingston的博客,上面有一篇内容详细介绍了如何使用_trackEvent()跟踪网页加载时长,原文地址请点击我

其实方法也比较简单,在此简单的把内容翻译加工下:

准备工作(人家都搞的这么专业,我也学习下):

第一步:修改原先的跟踪代码

最初的的跟踪如下:

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['._setAccount', 'UA-15373241-1']);
  _gaq.push(['._trackPageview']);
  (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>

修改后如下:

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['pageTracker._setAccount', 'UA-15373241-1']);
  _gaq.push(['pageTracker._trackPageview']); 
  (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> <span style="color: #000000; font-family: Consolas; font-size: x-small;">说明:这里使用pageTracker对象,避免后面的冲突。</span>

第二步,在页面顶端head区域添加JS代码,这表示从页面顶端开始计时;

<script type="text/javascript">
 var plstart = new Date();
</script>

第三步,添加事件跟踪代码:

<script type="text/javascript">
  window.onload=function() {
  var plend = new Date();
  var plload = plend.getTime() - plstart.getTime();
  if(plload<1000)
  lc = "Very Fast";
  else if (plload<2000)
  lc = "Fast";
  else if (plload<3000)
  lc = "Medium";
  else if (plload<5000)
  lc = "Sluggish";
  else if (plload<10000)
  lc = "Slow";
  else
  lc="Very Slow";
  var fn = document.location.pathname;
  if( document.location.search)
  fn += document.location.search;
  try {
  _gaq.push(['loadTracker._setAccount', 'UA-15373241-2']);
  _gaq.push(['loadTracker._trackEvent','Page Load (ms)',lc + ' Loading Pages',fn,plload]);
  _gaq.push(['loadTracker._trackPageview']);
  } catch(err){}
  }
</script>

这段代码展示了采集的逻辑及判断依据,其中1000、2000都是以毫秒为单位,所以1000代表1秒。上面代码中设置的逻辑是小于1000毫秒就是Very Fast,你可以根据实际情况进行调整。

注意:

1.这个地方_gaq.push[]中的对象为loadTracker,而不是开始pageTracker,这样就避免的2个JS对象的冲突。 2.这段代码的UA ID为UA-15373241-2,与第一段代码的UA ID不一样,这是为了避免landing Page的跳出率计算错误。

效果如下:

report-2

使用虚拟页面

此部分可以参考蓝鲸的博客内容:

Google Analytics中trackPageview函数的5种使用策略

Read more: http://bluewhale.cc/2010-01-12/google-analytics-trackpageview-policy.html#ixzz1MJKrQfci

使用JS和_trackPageview函数从时间维度监测页面表现

Read more: http://bluewhale.cc/2010-01-12/js-trackpageview-time-dimension-tracking-page.html#ixzz1MJKy7j8d

##小结

3种方法都可以采集页面加载时间。但是官方的方法对访问量小的网站来说难以说明实际问题。采用事件跟踪方式和虚拟页面方式都可以获得准确的数据,但是需要新建Profile进行配置,另外十分值得注意的是需要对Landing Page的跳出率统计考虑。(蓝鲸的博客没有写到要新建Profile,但是在回复中他也说到虚拟页面会导致PV虚增,需进行过滤,其实也可以参考上面事件跟踪方式的方法将数据分离。)

页面加载时间并不需对全站进行,所以推荐先根据GA报告统计哪些页面为热点页面,再单独插码进行处理。

Powered by Jekyll and Theme by solid