之前谈到在apache日志中看网站用户数据 中提到的,单纯从日志上看不到页面点击的操作,所以在用户体验设计的时候,很难量化各个设计要素的效果。因此我们需要一种页面内点击记录的方式来挖掘网站用户数据。这里一般会有两种方式进行记录。

fordate

第一种方式,在点击上埋点:

这种方式会在点击的代码中加入一些代码,例如seed=“submit“ 这样的代码, 跟踪的JS在用户点击的时候向数据记录的服务器回发数据代码的记录。这样的埋点可以放在有跳转产生的链接上,也可以放在例如checkBOX这样的控件上。

比如:

YUE.on(neoA3, ‘click’, function(evt) {
YUE.preventDefault(evt);
YUD.addClass(neoDiv, ‘hidden’);
// 埋点
new Image().src = ‘http://www.atpanel.com/jsclick?cache=’ + (+ new Date) + ‘&cartframe=guanbi’;
});

上面蓝色的字体就是埋点了,它不做页面相关的事情而是把用户当前点击的东西,传到服务器达到记录用户点击的每一步。
上面的例子是淘宝的detail页面的一个小缩影。

这样操作的好处是:

●成本相对比较低,在整个页面的操作上,由于用户的点击一般不超过页面记录的两倍,所以这个数据的传输量并不是很大。

●可以记录用户绝大多数的操作记录,并且可以根据数据分析很多的数据问题。

●记录丢失量很小,由于是用户触发的操作,这个数据99.5%以上可以被记录下来。

这个方案存在的问题是:

●没有埋点的空点击无法记录;

●所有监控的页面位置都需要进行埋点的处理,这对开发来说是一定的成本。

●只能知道用户点击行为,但是不知道这个行为是在那个位置发生。

第二种方式,采用点击记录

这种方式通过页面上的触发器,鼠标每次点击的时候,向服务器请求一个信息。并且摆放在鼠标当前的坐标上。

这样操作的好处是:

●无需要对页面进行其他的处理,只要进行添加整体的代码就可以。

●可以记录到详细的每一个点击的行为,只要用户是在这个页面上点击操作都可以记录,即使用户是在页面上空点。

这个方案存在问题是:

●页面的成本很高,需要监控页面上的所有点击行为,这对页面本身的压力就很大,甚至很可能因此而改变用户的行为。

●记录量增大,用户的行为产生的数据量远大于上一个方案中的数据。

●页面代码的要求增高,因为是根据坐标定位的,所以定位需要注意。

●数据处理极其复杂,受浏览器,屏幕分辨率,CSS代码等问题影响较大。这点的分析上,必须结合浏览器内核和分辨率进行分析。例如自适应的页面,你很可能发现用户在某个位置有空点击,而事实上,在他的分辨率下,按钮正好是在那个位置上。

 

在应用上,记录第一种方案的信息就已经够分析了。第二个方案主要是用在A/Btest上。

以一个例子说明各个方式之间的差别:

例如分析浏览器的刷新,点击浏览器的刷新会产生一个本页面到本页面的跳转,在页面上点击链接也可能产生一个本页面到本页面的跳转,如果我们以B页面命名刷新的页面。那么A页面上有到B页面的一个链接。

在服务器日志的记录上可能没办法区分出本页面到本页面的跳转,因为上面根本没有来源页面,连着的B页面的记录,可能是在A页面上点击B的链接也可能是刷新,比如第一次出现B页面,之后刷新B页面。也可能比如是两次的在A页面上点击B页面的链接。

但是使用了js或者图片的跟踪系统以后,通过来源页面就可以找到这类的数据,如果来源页面是B和当前页面也是B,那么可以证明是B页面到B页面自身的跳转。但是这个刷新是来自于页面的点击,还是浏览器上的刷新,就不得而知了。

靠着埋点的方式,如果是页面上的点击的话,则会在B页面到B页面,这条记录之前有一个页面的点击记录。如果存在点击记录,则证明用户是在B页面上点击了一个链接,如果是没有这个点击记录,则证明用户点击的是浏览器的刷新。

事实上,采用点击记录的方法可以做到的事情更多,但是如果可以在埋点的命名上作一些规则的话,多窗口的操作等等信息,也是可以根据埋点的信息分析到。

综合以上, 那么如果你想简单了解用户信息并监测网站安全,日志信息就足够了,如果是想监控网站访问的数据,监控的JS就可以了, 但是如果想知道用户的点击行为,就需要在可以点击的位置上埋点甚至点击记录。

5 Comments

Leave a Reply to 锋子 Cancel reply

Your email address will not be published. Required fields are marked *