使用 JavaScript 分析用户访问行为数据

我们都知道用户在网站上的访问行为数据是一座金矿,如果能恰当地加以分析,我们便能了解到用户在网站上做了些什么、体验如何,有时还能帮助我们发现一些从未注意到的问题,比如某个错误的交互设计等。但遗憾的是,传统的 UED(用户体验设计)部门通常只负责制作页面,或者至多再参与一些原始数据的收集工作(这个工作一般需要由 UED 的前端开发工程师来完成),却很少涉及到具体的数据分析。

当然,现代 UED 部门一般仍然是有一些岗位负责用户体验的反馈工作的,比如用户研究员。但大部分用户研究员的工作主要是调查问卷分析、用户访谈、焦点小组等,仍然并不涉及对原始的用户访问行为数据的定量分析。一般情况下,这些用户访问行为数据通常会由数据仓库部门保存,然后由 BI 部门进行分析,再生成各种报表供各个需求方查阅,而这个分析系统或流程对 UED 的同学来讲,通常是比较难用的,很多设计师或前端开发人员甚至从没和 BI 团队打过交道,也几乎从未从用户访问行为数据中得到过有效的反馈。

这就造成了一个奇怪的现象:号称最注重用户体验的 UED 部门,对真实用户产生的访问行为数据却几乎视而不见。每天海量的用户行为数据产生,又被淹没了,大家都知道无数宝贵的信息藏于其中,但大多数人都不知道怎么获取这些信息,于是,设计下一个产品或版本时,很大程度上仍然只能依靠设计师的经验和灵感。

设计验和灵感当然是无可替代的,但既然网站运营是一个与用户互动的过程,那么如果能了解到用户的真实访问行为,对设计一定会有重要的参考价值。

事实上很多 UED 同学都有上面的想法,但 UED 仍然极少直接参与用户访问行为数据的处理,主要的原因是数据处理的门槛太高。这些用户行为的日志数据一般量都非常大,从数据的采集部分开始就困难重重,比如如何保证采集服务器的负载均衡,又如何将日志数据从采集服务器导入到数据库或数据仓库之中,最后最重要的,是如何读取这些日志数据并进行分析。对 UED 的同学来说,最熟悉的编程语言可能是 JavaScript,而这种为网页交互而设计的语言,在海量的日志分析场景中似乎完全没有用处。

但凡事无绝对。Google 的 V8 是一个伟大的发明,当基于
V8 的 NodeJS 横空出世让使用 JavaScript 编写后端程序成为可能时,使用
JavaScript 来分析海量的用户行为数据的工作也就不远了。

网站的用户访问行为数据的处理流程大致可以分为三个阶段,分别为采集、分析、报表。如下图:

数据采集通常需要前端开发工程师在页面上添加一段 JavaScript 来完成(一般叫作埋点),这段 JavaScript 会收集用户在当前页面的访问信息,然后发送到打点服务器。传统情况下,到这一部,UED 所能做的工作就结束了,接下来就是数据仓库和 BI 的工作了。

但有了 V8 之后,我们可以在数据分析的部分增加 JavaScript 支持,这样一来,熟悉 JavaScript 开发的前端工程师就可以编写 JavaScript 脚本来处理海量日志,并得到分析结果,生成报表。

这个过程如下图所示:

好了,上面就是本文所想讲述的全部创意。

当然,作为一名经常要采集各种用户访问行为数据的工程师,我自然不会让上面的想法只停留在创意阶段,事实上,我已经做出来这样一个系统,并且正在内部小规模试运行。就目前的情况来看,这个想法是行得通的。不过本文并不会涉及这个系统的实现细节,已经得到老大的同意,等它到达一个相对稳定的版本之后,我们会将它开源。

这样一个系统最大的价值其实并不是让数据分析人员可以使用另外一种脚本语言来写分析任务,而在于让 UED 部门的前端开发工程师也能参与到数据分析工作中来,这就大大地降低了 UED 部门使用数据的门槛。我们知道,网站开发过程中,呈现给用户的网页最终是掌握在前端开发人员手里的,可以认为前端开发人员是网站开发中最接近用户的人,同时,收集用户行为数据的脚本通常也是由前端开发工程师编写的。因此,前端是网站体系中最清楚用户在网页上做了些什么以及怎么做的人,以前他们只能把收集到的行为数据交给 BI 去分析,现在他们可以自己采集自己感兴趣的数据,自己分析,自己验证。

比如说,某位需求方(可能是设计师、运营,或者就是某个前端)想了解页面上某个按钮的点击情况,或者某个长页面用户一般会往下拉几屏,或者某个页面上某一个区块的加载时间,这些都是很小很零碎的需求,如果仍然只有 BI 那边才有能力分析数据,则这些需求可能要走一个很长的流程才能完成,甚至很多时候因为 BI 的资源的限制而被拒绝,或者需求方对这个长长的流程望而生畏干脆放弃了这个需求。但有了使用 JavaScript 分析数据的系统之后,这些需求在部门内部就能很快速地完成了。

上面提到,这个系统的价值在于大大地降低了 UED 部门使用数据的门槛。要真正实现这一点,其实还有很多工作是必须做的,比如 JavaScript 通过什么样的接口访问日志数据?我们希望一位普通的前端工程师也能在半小时之内理解这个系统,并且可以开始根据示例或手册编写自己的分析脚本,因此,我们需要将足够多的底层细节隐藏起来,只提供必须的明了的接口。同时,我们还需要考虑到安全性和灵活性,不能让一位工程师的误操作影响到其他工程师的数据,也不能封装过度让某些合理的操作无法完成。

另外还有一点需要考虑的是性能问题。不过根据我的测试,这似乎并不是一个大问题,因为大部分情况下 JavaScript 只是通过 V8 调用更高效的“后端”语言来访问底层数据,性能主要还是取决于“后端”语言。当然,对某一些任务来说,如果纯粹使用传统的“后端”语言来处理分析任务,一定可以写得比用 JavaScript 来做更高效,但为了得到使用 JavaScript 就能分析数据的便利性,适当的性能牺牲应该也是可以接受的。

最后,鉴于现在已经有一些关于 NodeJS 的招聘广告了,让我们稍微遐想一下,将来会不会出现类似这样的招聘信息:“招聘数据分析专员,要求精通 JavaScript ……”

或许在不久的将来,JavaScript 将成为一门更为通用的语言,今天我们经常做的前端开发可能将不是 JavaScript 程序员的全部,而只是一个普通的部分。:-)

转自:http://oldj.net/article/javascript-miner/

时间: 2024-10-27 06:32:58

使用 JavaScript 分析用户访问行为数据的相关文章

网站分析:用户访问、内容浏览和流量来源

我们在使用一些网站分析工具的时候会发现一般报表会被分成三大模块:用户访问.内容浏览和流量来源.每个分类都由各种分析度量组成了各类的展示报表,这里先介绍一下内容浏览模块(主要指的是网站的页面浏览)下的各种度量,以及基于这些度量我们可以实现哪些细分. 页面的基本度量 关于一些常见的网站分析度量的定义可以参考我之前的文章--网站分析的基本度量,下面罗列的是一些页面的度量: 页面浏览次数(Pageviews) 页面被打开或请求的次数. 唯一页面浏览次数(Unique Pageviews) 这个是Goog

ssh框架,c3p0数据源,2个用户访问时数据互串

问题描述 我软件用的是ssh框架,c3p0数据源,weblogic服务+oracle10g64位,这是基本配置,现在出现了一个问题是,A用户和B用户数据互不关联.但A在修改自己的数据的时候,有时候会把B的数据修改掉.求大神指教,如何处理这种情况.spring.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/b

jquery使用attr访问自定义属性,减少javascript脚本中代码和数据

[示例代码]<html> <head> <script src="jquery-1.2.js"></script> <script> $(document).ready ( function () { $("#link").click ( function () { alert($(this).attr("var")); } ); } ); </script> </he

本机搭建tomcat服务器 架设网站 局域网内用户访问 页面动态加载的数据无法加载

问题描述 本机搭建tomcat服务器 架设网站 局域网内用户访问 页面动态加载的数据无法加载 本机搭建的tomcat服务器,数据库.局域网内用户访问系统页面,ajax动态加载数据无法显示.如图: [用户类型]是ajax动态加载的!本机页面正常,局域网内用户只有页面,没数据! 解决方案 你的代码呢?用chrome开发工具或者firebug看看报错了没有,ajax返回了什么内容. 解决方案二: 浏览器log中有没有错误,ajax打印下返回结果

如何分析用户反馈数据? | 下

在<理解用户反馈最佳实践指南>的第一部分中,我们主要着眼于如何分析和理解那些对我们的产品有重要影响的反馈类型. 一旦你决定了应该聚焦于哪些反馈以后,接下来,要如何针对用户的反馈制定公司的可执行方案?如何管理大量开放式的用户反馈,然后在制定产品路线时使用它? 按照以下步骤操作,可以帮助你自信地对客户分析列表进行优先级排序操作,还可以使用分析的输出物来帮助制定您的产品路线图. 1.整理你的数据 首先,整理所有你想要分析的开放式用户反馈数据,并使用电子表格(Excle)给每一个用户加上主要的数据表头

oracle-Oracle:如何监控用户访问视图和抽取数据?

问题描述 Oracle:如何监控用户访问视图和抽取数据? 在数据库中有这样的应用: 在数据库中开放视图供用户查询和抽取数据. 现在有2个问题就是: 1.需要数据库记录哪个用户何时查询过视图.查询了哪些类别的数据,涉及的数据量: 2.记录哪个用户何时抽取了多少数据,抽取了哪些类别的数据,最好能记录抽取数据的内容. 解决方案 记录select语句,建议你这么来用,不要开放数据库级的接口,用webservice来实现接口,这样你就可以记录sql以及结果了 通过select,只能从日志里去找,只有sql

javascript面向对象之访问对象属性的两种方式分析_javascript技巧

本文实例分析了javascript面向对象之访问对象属性的两种方式.分享给大家供大家参考.具体如下: javascript面向对象的访问对象属性的两种方式.如下代码所示: 复制代码 代码如下: <script language="javascript" type="text/javascript"> function Person(){}; var p1 = new Person(); p1.name="王美人"; document.

如何利用百度管理员工具简单分析网站近期优化数据

众所周知,网站优化过程中数据分析是必不可少的日常工作,尤其对于一个新手朋友而言,笔者建议最好去百度站长平台申请下百度站长工具,一般就是提交申请的网站,下载验证码到ftp用域名访问这个验证码文件即可验证成功,新申请的网站数据信息,一般数据需经过一天之后才会显示在百度网站管理员工具的后台,今天笔者以自己蓝田玉网站为例子进行分析下如何用百度管理员工具分析我们网站优化数据.   第一,分析网站的百度索引量.首先笔者第一张图放的是近一周百度对于自身网站索引量的分析,上周笔者通过观其站长工具查到自己网站收录

互联网公司网站访问的数据该如何应用?

文章描述:网站的访问数据为何很少被应用. 在互联网公司的众多数据中,营业的数据.财务的数据往往是比较容易得到应用,但是网站访问的数据往往是应用得最少的.这是什么原因,网站数据该如何应用呢? 先说应用少的原因: 1.首先是数据的重要程度的认识.         交易数据.财务数据往往是关系到公司的生死,如果这个数据出现问题了,那么公司的运转就会出现了紧张状况.所以上到CEO,CFO:下到公司的具体员工都在关心这个数据.         网站数据只关系到公司产品自身的好坏,而在公司发展的阶段,这点上