《Advanced Web Metrics with Google Analytics》读书笔记(2)

《 Advanced Web Metrics with Google Analytics 》是 Google 一位数据分析专家 Brian Clifton 出版的书,主要介绍了涉及网站分析的一些概念和方法以及如何利用 Google Analytics 进行网站分析。Google Analytics 是 Google 免费提供的一个用于网站分析的工具。

本系列文章是笔者在阅读本书过程中总结整理的一些笔记。

本文是本书中 Chapter 2 的阅读笔记,主要介绍了网站分析常用的两种途径以及网站分析的数据的准确性。

网站分析的两种手段

页面标签(page tags)和日志文件(logfiles)是网站分析的两种常用手段

页面标签一般是在html页面中嵌入js代码段,浏览页面时js代码会将浏览记录发送到远端服务器,远端服务器将对浏览页面进行统计,并提供可视 web 界面,GoogleAnalytics 就是属于这种手段。

日志文件则是利用 web 服务器软件(如Apache、Tomcat等)产生的日志文件进行统计,日志文件能够记录访问的ip和页面等信息;然后在本地服务器上统计并生成所需结果。

除了上面两种途径,还可通过网络流量情况、web服务器软件提供的api等方式进行数据的采集和统计。但是最常用的手段就是上面提到的两种。所以下面详细列出这两种方法的优点点和不足。

方法 Page Tags Logfiles
Advantages (1)不受代理服务器和缓存服务器的影响
(2)能够实时处理客户端产生的数据
(3)数据采集程序的升级以及数据的存储仅需服务商提供
(1)能够保留历史数据
(2)不会受到防火墙影响
(3)跟踪带宽及下载情况,区分完全下载和部分下载
(4)能够跟踪网络爬虫的来源
Disadvantage (1)部署的不恰当或导致数据的丢失且无法重新找到
(2)防火墙可能会拦截这种方法的流量
(3)不能够获取带宽或者下载具体情况,即不能确定是否下载成功
(4)不能跟踪网络爬虫的来源
(1)代理服务器和缓存服务器会影响数据准确性
(2)需要维护服务器的程序正确性以及数据的存储等
(3)网络爬虫会使得访问者的数量比实际的大

从上面的比较分析可以看到,两种方法的优点和缺点几乎是互补的,所以在实际中不需要局限于一种方法,而可以混合多种方法进行分析。

Cookies 在网站分析中的作用

页面标签(page tags)是通过 cookies 来追踪访客的。cookies 是以文本方式存储在客户端本地的一系列 key-value 对,用来存储客户端的一些信息,每次客户端请求服务器端的资源时,服务器端都可以获取客户端对应的cookie,不同的 cookie 根据不同的域名来区分。

cookies 有几种分类:

根据生存时间可以分为永久 cookies (persistent cookies)和 会话 cookies (session cookies),永久 cookies 指那些关闭浏览器后再重新打开时依然有效的cookies(前提是客户端不会清理cookies),而 会话 cookies 则指那些只在浏览网站期间有效的cookies,关闭浏览器后 cookies 会自动失效。

根据来源可以分为第一方 cookie (first-party cookie)和第三方 cookie (third-party cookie),第一方cookie指你访问的url 所属的域名在你的电脑上留下的cookie,我们之前已经提到过:不同的cookie通过不同的域名进行识别。第三方 cookie 则刚好相反,是你访问一个url后所获得的cookies中,那些不属于这个url所属域名的cookie,如一些网页中嵌入的一些广告可能会留下cookies,这些cookies不属于所访问的页面所属的域名,这个就可以算为第三方 cookie。两者的区别在于第一方 cookie 只能由设定这个cookie的域名所获取;而第三方 cookie 则允许列出可以获取这个cookie的所有域名。

cookies 在网站分析中的一些常见作用包括:能够判断访客是否第一次访问这个网站,每隔一定时间会有多少访客再次访问,每位访客具体的访问间隔时间等

数据准确性

无论是网页标签(page tags),还是日志文件(logfiles),任何一种手段均存在采集数据的不准确性问题。下面分别讲述这两种方法存在一些问题以及解决方法

日志文件中的数据不准确性

动态分配IP

动态分配IP会使得统计出来的访客人数比实际要大。 现今为家庭提供网络服务的 ISP 一般都是分配动态IP,美国曾统计过(http://www.comscore.com/Press_Events/Presentations_Whitepapers/2007/Cookie_Deletion_Whitepape)一个家庭平均每个月会使用10.5个IP地址,这会导致通过日志文件统计出来的访客数量要大于实际的。因为日志文件是通过不同IP来区分不同的访客的,按照上面的情况,会将一个访客统计为10个访客,因为这个人在访问网站时IP会变化。 这类问题可通过cookie 来解决。

缓存

缓存会使得统计出来的访客人数比实际要小。 缓存又可以分为客户端的缓存和服务器端的缓存。 客户端的缓存指的是用户在访问网站后,用户使用的浏览器会缓存其访问过的某些页面,使得用户再次访问这个页面时浏览器可以从本地获取,从而加快其访问速度。但是这样服务器的日志文件就无法记录这次的访问信息了。 服务器端的缓存的作用与客户算的类似,也是将一些常被访问的页面缓存起来,加快客户端的访问速度,我们常听到的CDN就是其中的一种。 对于这种问题,貌似目前还没有比较好的解决方法。

网络爬虫

网络爬虫会使得统计出来的访客人数比实际要大。 网络爬虫在搜索引擎等领域使用得非常广泛,可以理解为通过程序获取页面信息。这会产生大量非实际访客访问的PV量,这就导致了统计出来的PV量比实际的要大。 可以通过追踪爬虫的来源从而在日志中过滤掉这个爬虫的访问记录。但是因为爬虫的数量很多,往往难以完全过滤掉所有爬虫的访问记录。

网页标签中的数据不准确性

代码部署不全

因为网页标签(page tags)的方法是通过在网站的每个网页上嵌入一段 JS 代码实现,所以在一开始部署这段代码的时候有可能会存在部署不全的情况,就是没有在每个网页上部署这段代码。这种情况在一些较大的网站上普遍存在。

JS代码发生错误

除了采集访问信息的js代码外,网页中不可避免会有完成其他功能的js代码,这些js代码假如发生了错误并且在网页源码中的位置处于采集访问信息的js代码前,会导致浏览器解析脚本引擎停滞工作,从而在下面的采集访问信息的js代码段将没有执行。

防火墙的阻挡

因为网页标签(page tags)方法会将数据发送给指定的数据采集服务器,所以防火墙能够阻挡这一动作。除此之外,防火墙还能够阻挡或者自动删除cookies。

Cookies中的数据不准确性

访客拒绝或删除cookies

因为cookies是存储在访客本地的电脑的,故可以将已有的cookies删除掉,也可以在浏览器设置中距拒绝cookies。据调查显示,第一方cookies的接受率可达95%,而第三方cookies则常被防火墙或反病毒软件拦截。

访客有多台设备或共享一台设备

这里的设备可以指电脑、平板、手机等,现今同一个人同时拥有这几种设备是很常见的事情,同时有些家庭也共用一台电脑,这就导致了下面可能存在的问题。

同一个访客有多台设备:用这些设备访问统一网页时均会生成cookies,这样统计时会将同一用户产生的三个cookies当做是不同用户产生的。 多个访客共享同一台设备:这样访问一个同一个网站只会产生一个cookies,但是分析cookies时只会将这个当做一个用户,显然分析结果不合理。

解决这类问题可以设置用户登录这一步骤,从而在cookies中标记不同的用户区分cookies的来源。