我目前正在尝试设置Client Side Experiment without Redirects,而不是默认的内容实验A / B测试。我想要做的就是让我的一半访问者禁用页面上两个现有样式表中的一个。
对我来说,使用默认的A / B方式是没有意义的,因为我必须设置第二个页面,并为我网站上的每个页面禁用样式表。
还有Running a Server-side Experiment但对我而言,我认为应该有点简单。
我有js all setup,我只需要告诉页面当有给定的变体时禁用样式表或者在DOM加载之前不渲染样式表。
我考虑的一件事是,给定一定的变化,重定向到同一页面,但附加一个url查询参数,如&stylesheet_disabled=true
然后我不会在服务器端渲染样式表但是当我简单地看一下我遇到了一个重定向循环,但也许有人有更好的方法来编写js。
非常感谢任何帮助。
答案 0 :(得分:1)
我是这样做的:
<head>
<script src="//www.google-analytics.com/cx/api.js?experiment=EXPERIMENT_ID"></script>
<script>
// Ask Google Analytics which variation to show the visitor.
var chosenVariation = cxApi.chooseVariation();
function redirectVariation($variation) {
var url = window.location.href;
if ($variation === 1) {
var queryString = document.location.search;
if (queryString.indexOf("stylesheet_disabled=true") == -1) {
if (Boolean(queryString)) {
url += "&stylesheet_disabled=true";
} else {
url += "?stylesheet_disabled=true";
}
window.location.href = url;
}
}
}
redirectVariation(chosenVariation);
</script>
这仅针对一种不同的变体设置,但可以轻松修改以获得更多。然后,您只需让服务器端的应用程序检测到querystring参数的存在并执行您喜欢的任何逻辑,在我的情况下不显示样式表。
理论上,这可用于使用GA内容实验客户端重定向执行任何类型的服务器端逻辑。希望这有助于其他人。
答案 1 :(得分:1)
你可以这样做:
<head>
...
<script>
if (cxApi.chooseVariation() != 1) { // not in the experiment
document.write('<link href="... />'); // add the stylesheet
}
</script>
...
仅在页面仍在加载时使用document.write
。
这是所有客户端,因此无需重定向和额外的服务器工作。