我刚试过Optimizely。问题是它会向用户显示不同的变化。有时我们不期望这种行为。例如,如果我将颜色从蓝色更改为红色,则Optimizely将在相同用户的原始(蓝色)和变体(红色)之间随机选择,这是不一致的。如何使Optimizely始终向用户显示相同的变体?
答案 0 :(得分:1)
将以下代码放入您的实验JavaScript:
setCookie = function (c_name,value,exdays) {
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var expires = exdate.toUTCString();
var isIE8 = (document.documentMode !== undefined);
if (exdays == 0) {
expires = (isIE8 == true) ? "" : "0";
}
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+expires);
document.cookie=c_name + "=" + c_value;
}
在每个变体(例如Blue Variant,Red Variant等)中,调用setCookie并检查该特定变体中的用户是否存在cookie。如果cookie确实存在,那么运行您希望该特定变体运行的任何代码。下面是设置一个名为tester的cookie的示例,它将在30天后过期。
setCookie('tester',true,30);
if(document.cookie.indexOf('tester')>-1){
//RUN YOUR CODE HERE IF THIS VISITOR HAS THIS COOKIE
}
答案 1 :(得分:1)
您好,我是Optimizely的工程师,
您也可以尝试使用更加面向开发人员的Fullstack产品。通过这种方式,您可以获得随捆绑软件一起安装的SDK,并使用代码实现测试逻辑。
示例:
npm install optimizely-client-sdk
const optimizely = require('optimizely-client-sdk');
const optimizelyClient = optimizely.createInstance({
datafile: {} // this is your experiment config which you get from the Optimizely UI
});
const variation = optimizelyClient.activate('color_experiment', 'user_1');
if (variation === 'blue') {
// do something for blue
} else if (variation === 'red') {
// do something for red
} else {
// default case
}
只要您将与第二个参数完全相同的user_id
传递给activate
,您就可以保证始终为该用户获得相同的变体。
有关入门的详细信息或详细信息,请查看:https://developers.optimizely.com/x/solutions/sdks/getting-started/index.html?language=javascript
答案 2 :(得分:0)
另请注意,优化广告会受到广告拦截器的阻止,如果用户在他们访问网页后打开广告拦截器并提供实验可以看到 - 他们会获得原始版本,就会发生这种情况。