网站用户行为数据统计与分析—埋点统计

2024-05-05 10:48

本文主要是介绍网站用户行为数据统计与分析—埋点统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:现如今,销售预测在提高企业经济效益及决策支持水平的方面占有重要的地位。随着企业信息化技术水平的提高,企业销售数据日益丰富,管理者对其中隐藏的销售预测信息的渴求愈来愈强烈。用传统的方法来分析这些海量数据中的销售信息相当困难,已不适应时代需求。此文目的正在此处,即如何寻找更好的方法去挖掘销售数据中隐藏的销售预测信息。

    应用:目前习惯了这样一种称谓:前端行为数据和后端商业数据。前段数据指访问量、浏览量、点击流及站内搜索等反应用户行为的数据,而后端数据更侧重商业数据,比如交易量、ROI(转化率)、LTV(Life time Value终身价值)。目前有些人关心行为数据,也有些人关心商业数据,但较少人把行为数据和商业数据联系起来看。大家往往只单纯看某一端数据。国内小有名气的网站CEO,每天也只看一个结果数据:网站今天的成交量是多少,卖了多少件产品。但是看数据走火入魔的人会明白,每个数据,就像散布在黑夜里的星星,它们彼此之间布满了关系网,只要轻轻按一下其中一个数据,就会驱动另外一些数据的变化。

   实现流程图:

    设计实现图:

    js埋点代码,此部分代码借鉴谷歌分析的思路设计,相信不难理解:

01 <!-- 获取用户行为数据(js文件外部引用) 五味子-->
02 <script type="text/javascript">
03    var _uid = "${sessionScope.memberId}";//获取用户会员ID
04    var _oid = "${orderId}";//获取用户订单ID
05    (function() {          //(function(){})是一个闭包的用法,闭包必定会被调用。
06   
07    var ga = document.createElement('script');
08    ga.type = 'text/javascript';
09    ga.charset='gbk';
10    ga.async = true;//ga.async = true 异步调用外部js文件,即不阻塞浏览器的解析
11    ga.src = 'js/ana.js'
12    var s = document.getElementsByTagName('script')[0];    //取得第一个tag名为script的元素
13    s.parentNode.insertBefore(ga, s);             //在s前添加元素ga
14  })();
15  </script>

   大家可能注意到了此段代码块中引入了一个ana.js文件,这个文件就是收集行为数据的核心代码文件:

001 /*
002  *生成UUID,用户唯一访问标识
003  */
004 (function() {
005   alert("asdf");
006   // Private array of chars to use
007   var CHARS ='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
008   
009   Math.uuid = function (len, radix) {
010     var chars = CHARS, uuid = [], i;
011     radix = radix || chars.length;
012   
013     if (len) {
014       for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
015     else {
016       var r;
017       uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
018       uuid[14] = '4';
019       for (i = 0; i < 36; i++) {
020         if (!uuid[i]) {
021           r = 0 | Math.random()*16;
022           uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
023         }
024       }
025     }
026     return uuid.join('');
027   };
028   Math.uuidFast = function() {
029     var chars = CHARS, uuid = new Array(36), rnd=0, r;
030     for (var i = 0; i < 36; i++) {
031       if (i==8 || i==13 ||  i==18 || i==23) {
032         uuid[i] = '-';
033       else if (i==14) {
034         uuid[i] = '4';
035       else {
036         if (rnd <= 0x02) rnd = 0x2000000 + (Math.random()*0x1000000)|0;
037         r = rnd & 0xf;
038         rnd = rnd >> 4;
039         uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
040       }
041     }
042     return uuid.join('');
043   };
044   
045   Math.uuidCompact = function() {
046     return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
047       var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
048       return v.toString(16);
049     });
050   };
051 })();
052  
053 //======================================UUID=============================end
054     //页面id,标识唯一一个页面
055     var url=window.location.href;
056  
057     var url_arr=url.split(".");
058      
059     var id=url_arr[url_arr.length-2];
060      
061     //获取会员ID
062     var _memberId = _uid || '';
063      
064     //获取订单ID
065     var _orderId = _oid || '';
066  
067     //用户标识UUID
068     var _utmb = $.cookie('_utmb') || '';
069  
070     //_utmb值为空时,调用Math.uuidFast
071     if(_utmb==null||_utmb=='undefined'||_utmb==''){
072          
073             _utmb = Math.uuidFast();
074              
075             $.cookie('_utmb', _utmb);
076              
077     }
078      
079     //从哪个路径跳转过来
080     var _ref = document.referrer || '';
081      
082     var _param = _ref.substring(_ref.indexOf("?"), _ref.length);
083      
084     var strs =_param.split('&');
085      
086     var utm_source='';
087      
088     for var i = 0; i < strs.length; i++) {
089          
090         if (strs[i].indexOf('utm_source')!=-1) {
091              
092             utm_source = strs[i].substring(strs[i].indexOf('=')+1,strs[i].length);
093              
094         }
095          
096     }
097      
098     //判断,如果utm_source的值不为空,则路径来源取值utm_source,否则取值_ref
099     if (utm_source!=null&&utm_source!=''&&utm_source!='undefined') {
100          
101         _ref=utm_source;
102          
103     }
104     //获取当前访问的页面
105     var  _currentURL=document.URL || '';
106      
107     alert($.cookie('_utmc'+id));
108     //一秒内连续刷新算一次请求
109     if ($.cookie('_utmc'+id)) {
110          
111     }
112     else{
113          
114         _utmc = $.cookie('_utmc'+id, true, {expires: 1/24/60/60});//expires以天为单位,cookie有效时间1秒钟
115         //写入,传到后台
116         var img = new Image();// 创建一个image对象
117          
118         img.src = 'http://localhost:18080/ec-ga/behavior.img?_utmb='+_utmb+"&_memberId="+_memberId+"&_orderId="+_orderId+"&_ref="+_ref+"&_currentURL="+_currentURL;
119          
120         document.body.appendChild(img);
121     }
    代码分析:

    此段代码也不难理解,有几个地方我捎带讲解一下:

    uuid,在这里我把它定为用户访问唯一标识符,更多有关uuid的资料,大家上网查。

    _utmc,用来标识一段时间内,如果用户不断刷新,我们算一次页面请求,所以在这里我们设置了cookie的有效期

    img,这里我们摒弃了传统的ajax发送请求,那是因为ajax不能跨域发送请求,所以我们这里采用了以图片的形式把数据发送过去。

    最后,别忘了添加两个js文件,一个jquery.js,一个jquery.cookie.js


转载:http://www.12333sh.gov.cn/sbsjb/wzb/226.jsp

这篇关于网站用户行为数据统计与分析—埋点统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961530

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X