[聊一聊系列]聊一聊前端功能统计那些事儿

欢迎大家收看聊一聊系列,这一套系列文章,可以帮助前端工程师们了解前端的方方面面(不仅仅是代码):https://segmentfault.com/blog...

1. 什么是功能统计

作为一名开发,我们的产品发布出去之后,无论是产品还是运营,其实都是想及时了解产品对用户产生的影响的。用户到底喜欢什么不喜欢什么。但是如果拉住用户去一个个问的话,也无法得到最真实的大众的想法。于是,运用大数据进行分析,就变成了产品们的利器。

那么这些反映了用户真实行为的数据,就得靠前端工程师们来打印了。

比如,你想看一个功能有多少用户进行了点击,来证明用户是否喜欢这个功能,亦或是你想看看用户究竟会在你的页面停留多长时间,从而判断用户的黏性。那么,在用户点击那个功能的时候,前端发送一条日志到服务端,这样积累下去,我们就能获得,每天有多少用户在点击某一个功能了。在功能发生迭代后,我们也能根据统计,来判断用户是否喜欢新的变化。

2. 如何统计

一般来讲,只要在想统计的行为发生时,发送一条请求到达服务端即可。这样我们的服务端就有了相应的记录。我们就能开心的利用记录数量来判断点击数量了。

一般来讲我们不必为了发送请求,就在各处点击的地方加个ajax,其实有种发送请求的方式比ajax更加的简单。而且还避免了跨域问题。

其实直接给一个图片、script标签赋值地址,就完成了一次GET请求。

例(如图2.1所示):

(new Image()).src = ‘https://gm.mmstat.com/tmallfp.4202.7‘;


图2.1

我们看到,轻轻松松就发送了一条请求出去,亦或者是使用script标签,或者fetch之类的方式也可以达到目的。

本人观察了一下腾讯网和淘宝网,的日志。发现淘宝网使用的是请求一张空图片到服务端,以此来实现的日志打印。

而腾讯网使用的,则是发送一个js请求的方式,来打印日志(如图2.2)


图2.2

其实无论使用什么方式,都殊途同归,最终我们得到的是服务端的一条access日志,利用这个日志,就可以记录了。

我们在开发的时候,在用户发生各个行为时,发送一条记录了此行为的数据。这样就能记录自己产品的方方面面了。

3. 服务端如何接收并使用数据

一般来讲服务器的server都会有access日志。这里拿nginx来举个例子。我们需要搭建一个nginx服务器,然后馋看nginx的conf(安装路径/conf/nginx.conf)如图3.1


图3.1

nginx可以配置一个access日志的文件,每当有请求打到当前的nginx上,都会产出一条access日志。

日志的路径也是可配置的,甚至可以配置文件的切割,这里就不再赘述。


图3.2

接着,我们访问一下这个服务,于是就产生了一条access日志(如图3.2),我们只要在功能点击的时候,往这台机器上发送一个简单的请求即可产生日志啦。接下来把日志整理整理,就可以产出产品经理们想要的反馈了。

4. 多种多样个性化的日志

如果我们需要各种各样的日志,那么可以把参数给多样化,用参数来区分各个不同地方的点击或者是各种交互行为。我们的access日志中,会留存有完整的URL,只要我们将其解析,就能拿到各处的点击行为了。

5. 跟我学---进行一次简单的打印日志

为了各位考虑,本小节的实验在windows下进行。首先,我们将下载一个nginx(本文最后的示例代码中也有),然后,更改其conf文件(如图5.1)。


图5.1

并将端口改为8091。并且去掉注释,打开access日志。


图5.2

双击启动即可。然后,我们访问一下http://localhost:8091/

发现nginx已然运行成功(如图5.3)


图5.3

接下来,我们看一下logs/access.log中的记录(如图5.4)


图5.4

多了一条,证明有记录了。

接着,我们创建一个html(在哪儿创建都行)--- testlog.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <button id="click2log">点我</button>
        <script type="text/javascript">
            document
            .getElementById(‘click2log‘)
            .addEventListener(‘click‘, function () {
                (new Image()).src = ‘http://localhost:8091/?action=log&clk=button‘;
            });
        </script>
    </body>
</html>

运行页面,点击按钮。我们发现,发送出一条日志(如图5.5)


图5.5

我们再次打开access.log,发现多了一条日志(如图5.6)


图5.6

于是我们的目的达成了。以后可以用action=log并且,clk=button的记录,来看有多少用户点击了按钮了。

示例代码在此:

https://github.com/houyu01/lo...

6. 需要注意的点

在日常打日志中,我们会遇到这样那样的问题,这里谨把我再工作中遇到的问题与大家分享一下。

1. 当点击发生本页跳转的时候,同时发送日志有一定几率无法发出。

当a标签发生点击的时候,我们往往会发送一条外链的点击日志,但是,如果这个a标签是本页跳转(而不是新开页面)的话,那么在日志发送之前,页面有可能就已经跳转了,这时,所有的请求都是发不出去的。目前应对这种状况,没有什么特别好的办法,

  1. 可以尝试使用先发日志,在日志的回调用进行跳转,这样就有可能造成跳转慢。
  2. 使用新式API?navigator.sendBeacon(),可以在本页面跳转之后,坚强的发出一条请求。但是兼容性不太好。
2. 发送的参数不要太多,太长

因为我们的请求毕竟算是GET请求,肯定有URL长度的限制。所以,发了大量的信息的话,怕会被截断。

3. 有一定丢失率

因为网络等等的原因,发送的日志,丢失率是肯定会有的,各位如果习惯的话,也就好了。

不要走开,请关注我。下一章,我们将继续聊聊速度统计。

https://segmentfault.com/a/11...

原创文章,版权所有,转载请注明出处

原文地址:https://www.cnblogs.com/baimeishaoxia/p/12630275.html

时间: 2024-07-30 00:47:38

[聊一聊系列]聊一聊前端功能统计那些事儿的相关文章

[聊一聊系列]聊一聊前端速度统计(性能统计)那些事儿

欢迎大家收看聊一聊系列,这一套系列文章,可以帮助前端工程师们了解前端的方方面面(不仅仅是代码): https://segmentfault.com/blog/frontenddriver 上一篇文章我们讨论了,如何进行前端日志打点统计: https://segmentfault.com/a/1190000005861012 这一篇我们来看看如何进行速度统计 网站的速度影响了用户访问网站最初的体验.试想,如果一个用户,在等待了若干秒后,还是停留在白屏的状态,那么他的选择将是离开这个网站.性能统计有

[聊一聊系列]聊一聊前端存储那些事儿

https://segmentfault.com/a/1190000005927232 欢迎大家收看聊一聊系列,这一套系列文章,可以帮助前端工程师们了解前端的方方面面(不仅仅是代码):https://segmentfault.com/blog/frontenddriver 在web开发越来越复杂的今天,前端拥有的能力也越来越多.其中最重要的一项莫过于web存储.开发者们如果使用得当,这些存储可以帮助我们提升网页的性能与灵活度.本文不讲个中的细节,只讲各种前端存储的利弊,与各类存储的应用场景.毕竟

前端学习的那些事儿

刚刚踏入前端这个领域,本身也是学计算机编程专业,学的不精,毕业那会儿整个人都比较迷茫,选择了跟专业没有多大相关性的SEO,在职场上摸爬滚打,还是觉得编码更有趣些,重新自学了近半年,开始我的前端路. 在这里简单说说前端学习的那些事儿,肯定很多人会问自己适不适合学前端,关键在于你喜不喜欢前端,兴趣是最好的老师,今天就开始学吧. 看书——获取系统的知识 ——<JavaScript高级程序设计(第3版)>.<锋利的JQuery>.<javascript权威指南>,我正在读的书

ASIC 前端功能验证等级与对应年薪划分[个人意见] (2011-07-04 15:33:35

下面的讨论转载自eetop,我选取了一些有意义的讨论,加了我的评注. 楼主zhhzhuawei认为 ===================================== 对于ASIC的前端功能验证(不含SOC的IP集成验证): 1. 只会在别人搭建的环境上跑跑用例.       年薪<8W 2. 若还会在别人搭建的环境上构造用例.       年薪<10W 3. 若还会对测试点进行简单的分解,并能利用脚本或高级语言进行简单的编程,搞些自动化.年薪<14W 4. 若自个能独立搭建自动

15-iOS开发工具系列(按功能分)

iOS开发工具系列(按功能分) 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode插件,iOS开发者有价值的工具集,iOS/OS X开发:各种工具快到碗里来!,App原型设计工具使用心得(上)& App原型设计工具使用心得(下),你用哪种工具进行iOS app自动化功能测试?,iOS 开发者必知的 75 个工具 有没有这篇文章总结的更全面的? 以下是今天的iOS开发工具系列 通用工具 HomeBrew:OS X上非常出色的包管理工具. 源码控制 Git:分布式版本

Android RakNet 系列之二 功能介绍

简介 RakNet 已经成功地在Android平台上测试成功.RakNet的文档很多,实现起来很简单,下面对Raknet功能细节进行详细了解. 详情 1.RakNet使用哪些数据结构? 结构文件 描述 DS_BinarySearchTree.h 二叉搜索树,以及AVL平衡二叉搜索树 DS_BPlusTree.h B+树,用于快速查询,删除,和插入 DS_BytePool.h 返回某个大小门限的数据块,减少内存碎片 DS_ByteQueue.h 用于读写字节的队列 DS_Heap.h 堆数据结构体

web前端开发教程系列-4 - 前端开发职业规划

前言 关于我:小天 1). 架构师,项目经理,产品经理 2). 中间件研发 3). VPCC 云计算基础平台管理 4). 智慧旅游 5). 智慧教育 6). 一次失败的创业体验(爱邂逅网) 一. 在开始规划职业之前,应该充分认识自己从事的行业,结合自己的价值观,树立合理目标,持之以恒 二. 人生阶段 1. 30岁之前: 2. 30岁以后:慢慢开始登上这个社会的大舞台,你这时候的目标就应该是一些具体的成就了,是做这些事情的副产品的时候了 三. 展望未来,个人认为在以下的前端技术领域,会产生较大的机

web前端开发教程系列-2 - 前端开发书籍分享(转)

目录: 前言 一. CSS 二. JavaScript 三. jQuery 四. 后记 前言 前端书籍在每个商城或书架上面都是琳琅满目,很多初学者又不能很好的判断书的质量或层次.因为今天给同学们分享一下,看书主要是两个方面,一个是层次性,一个是持续性.阅读是一件快乐的事情,要持续的浇灌,希望之田才会长青不衰. 一. CSS css的书大多是停留在基础普及,就是介绍Css基础概念的居多. 下面列举几个,有的可能已经绝版了,只能看到电子版了. CSS网站布局实录  这本是出现比较早的css书籍,现在

web前端开发教程系列-2 - 前端开发书籍分享

目录: 前言 一. CSS 二. JavaScript 三. jQuery 四. 后记 前言 前端书籍在每个商城或书架上面都是琳琅满目,很多初学者又不能很好的判断书的质量或层次.因为今天给同学们分享一下,看书主要是两个方面,一个是层次性,一个是持续性.阅读是一件快乐的事情,要持续的浇灌,希望之田才会长青不衰. 一. CSS css的书大多是停留在基础普及,就是介绍Css基础概念的居多. 下面列举几个,有的可能已经绝版了,只能看到电子版了. CSS网站布局实录 这本是出现比较早的css书籍,现在可