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