多目标测试_ Google Website Optimizer
2009-07-01
Google Website Optimizer 默认情况下是不提供多目标(不是多变量)测试的,通常都是一个实验对应于一个目标。我通过YORK给的文章还有自已作了大量的实验,写出了下边这个JS文件,可能实现无限制目标的测试,及多目标测试!感觉这个结果比较有价值,所以写出来,记录给自已也和大家分享一下!开放的心理,分享的精神!
一、前期准备:
假如你要作一个实验,他有两个目标,例如,第一个目标是在你网站停留时间大于10秒的人有多少。第二个目标是在你网站上停留时间大于15秒的人有多少!
1、建立第一个多变量实验,我们称为主实验,在建立好后,你会从Google的后台得到一个十位数的测试ID号,你把这个ID号复制一下。打开http://www.zishu.cn/s/tool/showOptCookie.php这个网址,把测试ID输进去,会返回一个20多位的值!这里边是怎么工作的,你就别管了,说起来比较麻烦!
例如主实验的这个值是:00005423942506877777:2:0
2、建立第二个多变量实验,我们称为从实验,建立过程和测试版本必须和主实验相同。建好后,得到一个十位的测试ID,同上步骤,返加一个20多位的值;
例如从实验的这个值为:00005423942506888888:3:0
二、原理:
要测试多个目标,就是保证两个实验返回的版本相当。所以,原理就是我先加载主实验,主实验开始后,会在客户端生成一个COOKIE,这时我从COOKIE中得到主实验的版本号,然后主动地更改COOKIE,必把从实验的信息写在COOKIE中,这时写的从实验的版本和主实验相同。完了后再加载从实验,这时GOOGLE会认为你已经运行了从实验,所以GOOGLE给你返回的版本也是和主实验相同的。这样就保证了两个实验返回的版本是相同的,之后的统计怎么作都行了。
三、开始一个正常的多变量实验:
optimizer.js 这个文件我后边会提供下载的!
<script src="optimizer.js"></script>
<script src="http://www.google-analytics.com/ga.js"></script>
<script>
var mainCookeiId = 00005423942506877777:2:0; //这个是主实验的返回值,如果你只作一个多变量实验,其实就只有一个主实验,多目标时才有从实验;
var _opt = new webOptimizer(mainCookeiId);
document.write(_opt.controlCode());
</script>
<script>
_opt.track(test, mainCookeiId); //这里是跟踪统计代码
</script>
<script>
utmx_section("a1"); //这里就是实验的版块
</script>
test
</noscript>
<script>
setTimeout(function(){_opt.track(goal,mainCookeiId)},10000); //这里是我随便写的一个goal统计代码,如果你说goal是在另一个页面怎么办?你只是 var _opt = new webOptimizer(); _opt.track(goal,mainCookeiId); 就可以了;
</script>以上是一个完整的多变量实验;
四、开始一个多目标实验:
<script src="optimizer.js"></script>
<script src="http://www.google-analytics.com/ga.js"></script>
<script>
var mainCookeiId = 00005423942506877777:2:0; //这个是主实验的返回值
var _opt = new webOptimizer(mainCookeiId);
document.write(_opt.controlCode());
</script>
<script>
_opt.track(test, mainCookeiId); //这里是跟踪统计代码
</script>
<script>
var addCookieId = 00005423942506888888:3:0; //这个是从实验的返回值
_opt.addTest(addCookieId); //这里是添加一个实验
//当然这里你可以加无数个实验
_opt.track(test, addCookieId);
</script>
<script>
utmx_section("a1"); //这里就是实验的版块
</script>
test
</noscript>
<script>
setTimeout(function(){_opt.track(goal,mainCookeiId)},10000);
setTimeout(function(){_opt.track(goal,addCookieId)},15000);
</script>
五、相关的optimizer.js 代码
这是上边两个实验用到的optimizer.js代码;
点这里直接下载:optimizer.js
var _udn = .zishu.cn; //如果你的实验要运行在多个子域名下,请把这里设一下,否则这行直接删除
function utmx_section(){}
function utmx(){}
Array.prototype.inArray = function (value){
for (var o=0; o < this.length; o++) {
if (this[o] === value) return true;
}
return false;
};
webOptimizer = function(){
if(arguments.length > 0) this.init(arguments);
}
webOptimizer.prototype = {
init:function(mc){
var sps = mc[0].split(:);
this.mtPid = sps[0].substr(0, 10);
this.mtId = sps[0].substr(10, 10);
return;
},
setCookie:function(name,value,timeout){
if (_udn && _udn != "") value += "; domain=" + _udn;
value += ";path=/";
if (timeout == 0 && _utimeout && _utimeout != "") timeout = _utimeout;
if (timeout > 0) value += "; expires=" + (new Date((new Date).getTime()+timeout*1000)).toGMTString();
document.cookie = name + "=" + value;
},
readCookie:function(name){
var cookieValue = "";
var s = name + "=";
if(document.cookie.length > 0) {
var offset = document.cookie.indexOf(s);
if (offset != -1){
offset += s.length;
var end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
cookieValue = decodeURIComponent(document.cookie.substring(offset, end))
}
}
return cookieValue;
},
controlCode:function(){
var k = this.mtId;
var x = this.readCookie(__utmx);
var xx = this.readCookie(__utmxx);
var h = document.location.hash;
var jsu = <sc+ript src="http://www.google-analytics.com/siteopt.js;
jsu += ?v=1&utmxkey=+k+&utmx=+(x?x:)+&utmxx=+(xx?xx:)+&utmxtime=+new Date().valueOf();
jsu += (h?&utmxhash=+escape(h.substr(1)):);
jsu += " type="text/javascript" charset="utf-8"></sc+ript>;
return jsu;
},
track:function(f, t){
var k = t.substr(10, 10);
try {
var pageTracker = _gat._getTracker("UA-6526558-1");//这个值要改成你的Google Analytics账号的ID
if (_udn && _udn != ) pageTracker._setDomainName(_udn);
if(f == test) pageTracker._trackPageview("/"+k+"/test");
else pageTracker._trackPageview("/"+k+"/goal");
}catch(err){}
},
addTest:function(v){
if(this.atId == undefined) return;
var sps = v.split(:);
this.atId = sps[0].substr(10, 10);
this.atPid = sps[0].substr(0, 10);
this.atKey = sps[ 1];
var isAt = false;
var utmx = this.readCookie(__utmx);
var utmxx = this.readCookie(__utmxx);
var cA = utmx.split(.);
var cB = utmxx.split(.);
var v = ;
for(var o=0; o<cA.length; o++){
var kA = cA[o].split(:);
var k = kA[0].substr(10,10);
if(k == this.mtId) v = kA[ 2];
if(k == this.atId) isAt = true;
}
var t = ;
for(var o=0; o<cB.length; o++){
var kA = cB[o].split(:);
var k = kA[0].substr(10,10);
if(k == this.mtId) t = kA[ 1];
}
if(v && t && !isAt){
this.setCookie(__utmx, utmx + . + this.atPid + this.atId + : + this.atKey + : + v, 63072000);
this.setCookie(__utmxx, utmxx + . + this.atPid + this.atId + : + t + : + 2592000, 63072000);
}
},
version:function(){
if(typeof(this.mtId) == undefined) return null;
var v = this.mtPid.toString() + this.mtId.toString();
var utmx = this.readCookie(__utmx);
var utmxA = utmx.split(.);
for(var o=0; o<utmxA.length; o++){
var cA = utmxA[o].split(:);
if(cA[0] == v) return cA[ 2];
}
return null;
}
}
点这里直接下载:http://www.zishu.cn/attachments/month_0906/optimizer.js
多目标的结果就是如下图:
本文可随意转载,但请注明出处:http://www.zishu.cn-子鼠:http://www.zishu.cn/blogview.asp?logID=839 多目标测试_ Google Website Optimizer
评论:0 条 | 查看:3619 次