《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 TagsLogfiles
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 的来源。