网站用户行为数据统计与分析—埋点统计
来源:互联网 发布:家具安装软件 编辑:程序博客网 时间:2024/04/29 01:39
背景:现如今,销售预测在提高企业经济效益及决策支持水平的方面占有重要的地位。随着企业信息化技术水平的提高,企业销售数据日益丰富,管理者对其中隐藏的销售预测信息的渴求愈来愈强烈。用传统的方法来分析这些海量数据中的销售信息相当困难,已不适应时代需求。此文目的正在此处,即如何寻找更好的方法去挖掘销售数据中隐藏的销售预测信息。
应用:目前习惯了这样一种称谓:前端行为数据和后端商业数据。前段数据指访问量、浏览量、点击流及站内搜索等反应用户行为的数据,而后端数据更侧重商业数据,比如交易量、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
- 网站用户行为数据统计与分析—埋点统计
- 网站用户行为数据统计与分析之一:埋点代码设计
- 网站用户行为数据统计与分析之二:数据写入mongodb
- 网站用户行为数据统计与分析之三:数据写入redis缓存队列
- 网站用户行为数据统计与分析之八:logstash与mongodb集成
- 网站用户行为数据统计与分析之九:elasticsearch与mongodb集成
- 网站用户行为数据统计与分析之四:logstash及其配置
- 网站用户行为数据统计与分析之五:redis及其配置
- 网站用户行为数据统计与分析之六:elasticsearch的配置和使用
- 网站用户行为数据统计与分析之七:kibana或elasticsearch-head
- iOS用户行为统计工具开发-无侵入埋点
- 前端用户行为统计
- 使用Flurry来统计和分析用户行为
- [第三方]使用Flurry来统计和分析用户行为
- 使用Flurry来统计和分析用户行为
- 网站统计中的数据收集原理及实现_埋点统计
- 埋点统计_网站统计中的数据收集原理及实现
- 网站统计中的数据收集原理及实现-埋点统计
- 写出高效清晰Layout布局文件的一些技巧
- Unity 分隔条 Spliter
- PHP7运行环境搭建(Windows7)
- git 让单个文件回退到指定版本
- java中的成员变量和局部变量的区别
- 网站用户行为数据统计与分析—埋点统计
- 1011. World Cup Betting (20)
- HttpClient类包基本使用方法
- Hibernate 缓存机制
- 【状态保持】Cookie解释以及原理分析
- C语言之堆栈详解
- c++中rapidjson库下载安装及使用
- spark 调用saveAsTextFile 报错NullPointerException
- 怎么更好的理解虚拟DOM?