我目前正在尝试设置一个不带重定向的客户端实验,而不是默认的内容实验a/B测试。我只想让一半的访问者禁用页面上两个现有样式表中的一个。
对我来说,用默认的A/B方式做这件事是没有意义的,因为那样我就必须为网站上的每个页面设置第二个禁用样式表的页面。
还有"运行服务器端实验",但对我来说,对于我认为应该有点简单的事情来说,这太过于苛刻了。
我已经设置了js-all,我只需要能够告诉页面,当有给定的变体时,请禁用样式表或在加载DOM之前不呈现样式表。
我考虑的一件事是,如果有某种变体,重定向到同一个页面,但附加一个像&stylesheet_disabled=true
这样的url查询参数,那么我就不会在服务器端呈现样式表,但当我简要查看它时,我遇到了一个重定向循环,但也许有人有更好的方法来编写js。
非常感谢您的帮助。
您可以这样做:
<head>
...
<script>
if (cxApi.chooseVariation() != 1) { // not in the experiment
document.write('<link href="... />'); // add the stylesheet
}
</script>
...
仅在页面仍在加载时使用document.write
。
这都是客户端的,所以不需要重定向和额外的服务器工作。
以下是我的操作方法:
<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内容实验客户端重定向的任何类型的服务器端逻辑。希望这能帮助其他人。