接上文,我们的数据的中,如果想记录用户的点击行为,一般会有两种方式进行记录。
一种方式是在点击上埋点的方式,在点击的代码中加入一些代码,例如seed=“submit“ 这样的代码, 跟踪的JS在用户点击的时候向数据记录的服务器回发数据代码的记录。这样的埋点可以放在有跳转产生的链接上,也可以放在例如checkBOX这样的控件上。
这样操作的好处是:
·成本相对比较低,在整个页面的操作上,由于用户的点击一般不超过页面记录的两倍,所以这个数据的传输量并不是很大。
· 可以记录用户绝大多数的操作记录,并且可以根据数据分析很多的数据问题。
· 记录丢失量很小,由于是用户触发的操作,这个数据99.5%以上可以被记录下来。
这个方案存在的一些问题:
· 没有埋点的空点击无法记录;
· 所有监控的页面位置都需要进行埋点的处理,这对开发来说是一定的成本。
· 只能知道用户点击行为,但是不知道这个行为是在那个位置发生。
另一种方式是采用点击记录的方式,通过页面上的触发器,鼠标每次点击的时候,向服务器请求一个信息。并且摆放在鼠标当前的坐标上。
这样操作的好处是:
· 无需要对页面进行其他的处理,只要进行添加整体的代码就可以。
· 可以记录到详细的每一个点击的行为,只要用户是在这个页面上点击操作都可以记录,即使用户是在页面上空点。
这个方案存在的一些问题:
· 页面的成本很高,需要监控页面上的所有点击行为,这对页面本身的压力就很大,甚至很可能因此而改变用户的行为。
· 记录量增大,用户的行为产生的数据量远大于上一个方案中的数据。
· 页面代码的要求增高,因为是根据坐标定位的,所以定位需要注意。
· 数据处理极其复杂,受浏览器,屏幕分辨率,CSS代码等问题影响较大。这点的分析上,必须结合浏览器内核和分辨率进行分析。例如自适应的页面,你很可能发现用户在某个位置有空点击,而事实上,在他的分辨率下,按钮正好是在那个位置上。
在应用上,记录第一种方案的信息就已经够分析了。第二个方案主要是用在A/B的test上。
以一个例子说明各个方式之间的差别:
例如分析浏览器的刷新,点击浏览器的刷新会产生一个本页面到本页面的跳转,在页面上点击链接也可能产生一个本页面到本页面的跳转,以B页面命名刷新的页面。A页面上有到B页面的一个链接。
· 在服务器日志的记录上可能没办法区分出本页面到本页面的跳转,因为上面根本没有来源页面,连着的B页面的记录,可能是在A页面上点击B的链接,,第一次出现B页面,之后刷新B页面。也可能是两次的在A页面上点击B页面的链接。
· 但是使用了js或者图片的跟踪系统以后,通过来源页面就可以找到这类的数据,如果来源页面是B和当前页面也是B,那么可以证明是B页面到B页面自身的跳转。但是这个刷新是来自于页面的点击,还是浏览器上的刷新,就不得而知了。
· 靠着埋点的方式,如果是页面上的点击的话,则会在B页面到B页面,这条记录之前有一个页面的点击记录。如果存在点击记录,则证明用户是在B页面上点击了一个链接,如果是没有这个点击记录,则证明用户点击的是浏览器的刷新。
事实上,点击记录可以做到的事情更多,如果可以在埋点的命名上作一些规则的话,多窗口的操作等等信息,都可以根据埋点的信息分析到。
综合以上, 那么如果你想监控网站的安全,日志信息就足够了,如果是想监控网站访问的数据,只要监控的JS就可以了, 但是如果想知道用户的点击行为,就需要在可以点击的位置上埋点了。
源地址:http://hi.baidu.com/koob/blog/item/6847b48bf0637ccafc1f1030.html