不完美的网站分析数据:数据风湿和访问者风湿

2012 年 11 月 12 日6020

  一、 技术风湿

  每种数据收集方式都有其独特的技术优势,但没有一种收集方式能完美的捕获到访问者在网站上的所有动作,每种技术也都会由于自身的局限性导致你看到的数据是并不完美的数据。以计算页面停留时间为例,下图是一次访问的时间记录:(图示中时间皆为进入页面的时刻)

  

访问时间记录

  通常计算页面停留时间的方法为:当前页面的进入时刻与下一页面的进入时刻差。由此得知上例中页面的停留分别如下:

  页面A:5分钟

  页面B:1分钟

  页面C:4分钟

  页面D:?

  为什么页面D的停留时间没有?没错,无论哪种收集方式都无法捕捉到页面D的准确停留时间,原因很简单,这些数据收集方式都无法捕捉到访问者离开的时刻(或者在退出页停留了半天没做任何点击,或者直接关闭了浏览器)。所以不同的工具厂商对退出页的停留时间有不同的定义,有的统一计算为1分钟,有的干脆认为是0分钟。

  目前主要有下面几种技术或限制数据的获取,或混淆现有收集到的数据。

  1. 缓存

  这里说的缓存不是指物理芯片例如CPU的缓存,而是为了节约网络资源,提高浏览网页速度建立的浏览器缓存或代理服务器缓存。简单的理解这两种缓存就是,将曾经访问过的网页内容(包括图片以及cookie文件等)存放在电脑或代理服务器里。当你调用以前阅读过的页面时,可以直接调出缓存中的内容,而不需要再次从网站服务器上重新传送数据。

  下图就是访问一个网站后本地缓存文件夹中留下的文件记录:

  

缓存文件

  由于当访问者通过本地缓存访问网站时,并不会往网站服务器发送请求,服务器中自然也就不存在这次访问的Log记录。也就是说通过Web日志收集到的数据一定会丢失这部分流量。

  2. 网络爬虫

  如果想要讲清搜索引擎爬虫的原理和算法恐怕单开一个章节都不够,而且也不是这本书关注的内容,所以这里就不再赘述。

  下面先给出一条网站服务器Log中的搜索引擎爬虫记录:

  203.208.60.178 [10/Nov/2011:12:00:00 +0800] "-" "GET /index.php HTTP/1.1" 200 30000 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://http://www.zjjv.com///bot.html)"

  从上面log记录可以看出:2011年11月10日 12:00:00的时刻,Google的Googlebot(Google的搜索引擎爬虫名)到访并抓取了首页/index.php

  这意味着Web日志收集的数据中会混有这部分数据。同时需要提醒的是,爬虫对网站服务器的造访仅仅为了下载抓取主要信息,网页内容并不会像网友访问时在浏览器里得以展示;换句话说,也就是此时网页源代码里的JavaScript数据收集代码是无法执行的。

  3. 防火墙

  由于防火墙的原理机制比较复杂,这里就不做详细解释,有兴趣的可以从维基百科或别的资源了解。

  简单的理解防火墙功能,可以认为它就是在网络中根据信任程度的高低,控制来回传送的数据流。它就像一张过滤网时刻监督过滤试图通过它的数据流。

  

防火墙

  防火墙给网络带来安全的同时可能会阻止JavaScript脚本向数据收集服务器发送数据。这无疑又会使JavaScript标记丢失一部分流量。

  二、 访问者风湿

  网站分析主要为了跟踪访问者在网站上的行动,但往往又被访问者对个人电脑的行为所影响。也许这就是理想与现实的差距,因为你不能要求所有的网友都按照你想要的方式在网上遨游。

  1. IP设置

  Web日志收集数据时主要依靠访问者的IP来区分唯一访问者,但当下面这种动态的IP分配方式出现时收集的数据出现误差就难免了。

  

IP设置

  一台机器使用不同的IP很可能会造成统计到的访问者要比实际的多。可以看出网站分析工具统计出的其实并不是真实的访问者人数,只不过是一个个IP或一个个浏览器罢了。所以更不用说当多个人使用同一台电脑时能否被正确统计了。

  2. JavaScript有效设置

  有些访问者为了确保安全可能会选择关闭浏览器里的JavaScript有效设置,这样失去的不止是一些网页特效;对采用JavaScript标记的工具商来说,失去的还有这部分访问者在目标网站上的所有行动记录。

  3. Cookie设置

  (1)禁用Cookie

  互联网的普及将人们带进全面的信息化社会,人们对个人信息的保护意识也逐渐强化起来。因为对隐私信息的敏感,一些人会选择禁用Cookie。

  

Cookie设置

  (上图可以看出Cookie的设置可以分为第一方Cookie和第三方Cookie两种设置,至于两种Cookie的区别有兴趣的可以查阅网上资料)

  离开Cookie,采用JavaScript标记将无法区分访问次数和唯一身份访问者人数,没有这两个基本度量,网站分析能做的也就不多了。所以说,Cookie的禁用对JavaScript标记收集数据是一个巨大打击。

  (2)删除Cookie

  人们经常会为了信息保护等原因删除Cookie。

  

Cookie删除

  定期或不定期删除Cookie直接会导致唯一身份访问者人数比实际人数要多。因为如果Cookie删除后会被重建一个新的Cookie,这样对同一个访问者会被重复统计。

  (3)多浏览器

  即使是同一网站也会根据浏览器的不同在同一台电脑中设立不同的Cookie。

  

多浏览器

  从上图能看出当同一个访问者使用了三种不同的浏览器访问网站时,JavaScript标记会由于Cookie的不同将这一个人统计成三个人。

  面对看似如此糟糕的数据,我们能采取哪些措施规避误差数据带来的分析误区呢?

  三、如何面对不完美的数据

  前面的讨论中可以看出不仅不同的数据收集方式对统计结果有直接影响,很多技术因素和认为因素也会对统计结果产生各种影响。面对如此“糟糕”的数据,如何才能从中洞察到指引行动的方针呢?

  先来看下某段时间内Google Analytics统计和维析的统计结果

  

Google Analytics统计和维析的统计结果

  (注:以上报表只是为简单说明并非真实,数据与格式皆为虚构)

  第一眼看到这两个没有一条相同数据的报表会让人无所适从。到底该相信Google Analytics还是维析?如果你一直还在为这个问题苦恼,那得赶快悬崖勒马了。因为没有一种工具可以保证它收集到的数据是百分百准确,有限度的误差是无法避免的。下面如果换一种视角也许你就能发现这两个报表中共同的信息:

  

Google Analytics

  

维析

  可以看出,两个工具统计的数据都有一个相同的趋势:经过10月1日国庆假期短暂的流量低迷后,从5号开始流量逐渐回升。分析这个趋势背后的原因,比追究某一天的数字到底是多少要有意义的多。即使你拥有绝对正确的数字,但如果你不能从这些数字中发现有利于决策的可用信息,这些数字也是毫无意义的;趋势,却可以让你在数字的海洋里掌握正确的航向。

  四、如何得到你想要的

  1. JavaScript标记的放置

  JavaScript标记数据收集原理决定了:数据能否收集以及收集后的数据是不是你想要的,根本依赖于JavaScript标记代码是否能正确执行;这也意味着如果在数据收集环节走入误区,将给随之而来的分析工作带来不可修复的影响(访问者不会因为你犯下的数据收集错误而帮你再现历史访问过程)。

  放置JavaScript标记你至少需要注意:

  (1)不能漏标任何你想统计的页面

  JavaScript标记不同于Web日志收集数据,如果你一旦漏标某个页面,将失去所有访问者在这个页面的行动记录。

  (2)尽量将标记放在页面代码的最后

  由于访问者下载完页面代码后是从上至下依次执行,当将标记放在页面的头部位置时,JavaScript标记代码的执行不仅可能延缓页面的展现,而且当数据收集服务器出现故障时可能导致页面无法正常显示。所以为了不影响页面的快速正常显示,应该尽量将标记放在页面代码的最后(一般都放在之前)

  当然为了进行一些特殊统计时(例如页面链接的点击),还是需要将标记放在头部,以便在页面中可以对标记中定义的方法进行正常调用。

  2. 页面的唯一标识

  原则上页面的URL就是区分不同页面的标识,但由于动态页面的应用等原因,即使是同一页面也可能由于参数不同或大小写不一致导致被统计成不同的页面,这直接给分析带来困扰。下面就是同一个页面被统计成多个页面的报告样例:

  

样例报告

  为了对页面进行唯一标识,你可以采取以下行动:

  (1)设置默认页

  如果http://www.zjjv.com/ 和 http://www.zjjv.com//index.html都指向你的网站默认页,设置默认页后可以避免被分别统计成两个不同的页面。

  一般分析工具都会提供对默认页的设置接口,这里就不再一一赘述设置方法。

  (2)统一URL大小写

  由于Google Analytics等分析工具会因为URL中大小写的不一致将同一页面统计成不同URL的页面,为了避免这种情况,可以对统计后的数据设置过滤,将URL统一成大写或小写(一般分析工具都会提供数据过滤设置功能)。

  (3)过滤掉URL中多余参数

  因为动态网页的应用需求同一页面URL后可能会带有各种不同参数,这就导致分析工具将带有不同参数的URL统计成多个不同页面。可以通过对特定参数的过滤设置避免这种统计误差。例如设置排除上图报告样例中的testid参数,就可以将/Item.php?testid=1与/Item.php?testid=2统计为同一个页面。

  3. 过滤多余数据

  (1)IP过滤

  为了排除自己或测试人员的访问流量,可以通过对IP的过滤排除这部分流量。

  (2)子域过滤

  当只关注某一子域的流量情况时,可以通过对子域的过滤设置只包含这部分流量。

  上面介绍的只是常用的两种过滤设置,通常工具都会提供各种过滤设置接口以满足不同需求。

  附:应该向网站分析工具商了解的技术参数

  1. 有效访问时限(一般为30分钟)

  2. 每天强行截止访问的时间点(无论是否超过有效访问时限,通过这一时刻的访问都会被强行切断;一般为凌晨某时刻)

  3. 判断再访问者cookie的有效时间(这个时间内重复访问会被识别为再访问者;一般为一年或两年)

  4. 页面最后停留时间(一般默认为1分钟或0分钟;如果工具可以收集此数据需要咨询具体收集方法)

  (版权归数码林网站分析博客所有,欢迎转载,但转载请注明出处。)

原文:http://http://www.zjjv.com///wangzhanfenxi-shuju-buwanmei

0 0