访问者行为追踪比较——Web服务器日志与JavaScript页面标记

转  http://site.douban.com/167315/widget/notes/9079326/note/223102099/


当前网站分析中对访客行为的追踪,最常用的方式Web服务器日志和JavaScript页面标记两种方式。

    Web服务器日志


基本原理

用户对网页的提出的一次请求,就称为一次命中。通过Web服务器日志软件,将请求信息记录在日志文件中,通过日志分析程序即可获得点击流(访问流)数据。

请求信息中包含:
请求 URL
状态
时间
来源链接 Referer
用户代理 User-Agent ,含操作系统,设备,浏览器等
Cookie
IP


根据这些请求信息,分析软件可以得到访客在什么时间请求了什么页面,是否出错,从什么地方来的,访客的客户端信息和地理位置,还可以通过设置的cookie获得访客的更多信息。
通过临时cookie即session表示一次访问,通过永久cookie标识唯一访客,或者用IP、IP + User-Agent标识唯一访客。

优势


日志不会丢失,只要服务器不宕机。
所有资源文件(HTML元素)的请求均可记录,包括html、js、css、图片、pdf文件等,包括文件下载是否完成。
可以记录搜索引擎机器人(爬虫)的行为。


局限


最大的局限是,只能记录客户端对Web服务器的请求日志,非向服务器的请求无法记录。
访客在客户端的鼠标点击行为、对象交互事件,如Ajax交互行为、Flash事件、鼠标轨迹、按键键入等,无法通过Web服务器日志获知。

另一个障碍是,页面缓存不会发生服务器请求,也就不会被无服务器日志记录。

其他的局限只是操作上的困难,如:
当前的网页设计中启用非常多的资源文件,一个网页的请求就有多个资源的请求日志,将其中的网页请求找出来,就需要过滤非页面请求,如css和jpg等。当然,分析软件可通过设置过滤条件处理此问题;也可通过将实际页面单独放在一个域下的服务器中,而其他的资源文件配置在其他服务器中,则可通过记录分析页面服务器日志即可,如亚马逊。


    JavaScript页面标记


基本原理

在访客请求的页面中,包含一段或几段用来记录客户端(浏览器)行为的JavaScript代码,在页面被载入时执行该JS代码或者在事件被触发时执行某JS代码,并将收集到的客户端行为数据发送给指定的服务器,可能是通过请求某资源的形式,也可能是直接写入数据库。

JavaScript页面标记代码可由网站所有者自定义提供,也可使用第三方工具提供的代码。页面标记代码一般需要覆盖到所有用户能访问到的页面,通常可以通过将此代码包含在公共引用模块中。由第三方提供的代码,通常会将数据发送到第三方制定的地址,并由第三方工具提供日志分析和数据统计报表,如Google Analytics。

原则上,JavaScript页面标记代码可以追踪到任何通过JS记录到的行为和触发的事件。



优势
可以记录客户端的所有JS能记录的行为,最基本的记录包括页面浏览,flash事件,Ajax交互,鼠标点击、滚动条滚动、表单填写等。

页面缓存的浏览行为可以被JS记录。

支持跨域跟踪访客行为。

操作上,可以独立与IT团队,不用后台开发人员维护,甚至不用前端开发,可以交给第三方工具(首次代码铺设需有网站拥有者添加)维护和统计。

局限


丢失率问题:
如果浏览器不启用JavaScript,则页面标记无用,记录不到这些访客行为,大约少于2%;
页面标记的JS通常都是最后(次优)载入的,如果用户在打开页面并在标记JS加载之前关闭页面,或者标记的JS未能正常加载,则数据不会被发送,也就不会被记录。此情况主要取决于代码加载顺序、大小、客户端网络速度,及其同步与异步加载机制等因素。

页面请求信息中的参数并未在url中显示,而是通过post传递给服务器,则这种请求常规通用的标记JS无法获取,可能需要特别的JS代码记录,增加复杂性。这取决与URL信息结构的问题。

搜索机器人不执行JS,故无法获知爬虫行为。

文件的下载状态无法直接记录。

重定向信息无法直接记录。



    Web服务器日志与JavaScript页面标记本质区别


Web服务器日志,记录的是客户端向服务器请求的行为,没有向服务器请求的信息无法获知,本质上记录的是Web服务器收到的请求日志;
JavaScript页面标记,记录的是客户端上发生的行为和事件,具有多样化特点。客户端行为可能因为代码运行出错、不及时,或者发送至日志/数据服务器途中丢失,而导致部分数据丢失。

    网站信息结构在网站分析访问者行为追踪的作用


URL规范化:良好的URL结构反映了内容组织的合理性,在统计分析中便于内容分类、查询;混乱的URL会是统计和分析带来复杂的逻辑和算法,并浪费运算资源,并使理解和查询复杂化。

你可能感兴趣的:(js)