4

基本上,我们想要 A/B 测试 2 个不同的页面布局标题。存在一些结构差异(不仅仅是切换 CSS)。我们也不想等待谷歌掷硬币来确定访问者应该看到哪个变体;相反,我们希望选择服务器端的变体并避免页面重定向。

下面的代码符合我的预期;如果我没有从 head 标签中省略它,它生成的 UTMX cookie 看起来与 Google 提供的 javascript 生成的 cookie 相同。

服务器端 PHP 代码:

public function setUtmxCookie($cookieName, $experimentsString)
{
    $domainHash = $this->getDomainHash($_SERVER['SERVER_NAME']);
    $cookieVal = $domainHash . $experimentsString;
    $expire = time() + 60 * 60 * 24 * 30;
    $domain = '.' . $_SERVER['SERVER_NAME'];
    setrawcookie($cookieName, $cookieVal, $expire, '/', $domain);
}

private function getExperimentsFromUtmxCookie($cookieName)
{
    if (isset($_COOKIE[$cookieName])) {
        $cookieVal = $_COOKIE[$cookieName];
        $experimentsArray = array();
        $experimentMatches = preg_split('/\./', $cookieVal);
        $domainHash = array_shift($experimentMatches); //remove the first item.  All that will remain in $experimentMatches is an array of experimentIds with their combos.
        foreach ($experimentMatches as $m) {
            $segments = preg_split('/:/', $m);
            $experimentsArray[$segments[0]] = $segments[1];
        }
        return $experimentsArray;
    }
    return array();
}

private function getExperimentsString($cookieName, $experimentId, $variation)
{
    $experiments = $this->getExperimentsFromUtmxCookie($cookieName);
    $experiments[$experimentId] = $variation;
    $experimentsString = '';
    foreach ($experiments as $key => $val) {
        $experimentsString .= '.' . $key . ':' . $val;
    }
    return $experimentsString;
}

那么,为什么我的 Google Analytics(分析)内容实验仪表板没有显示我的实验的任何访问者?我是否不完美地设置了 utmx cookie?除了设置 UTMX cookie,GACE 是否还在寻找其他东西?

4

2 回答 2

3

在过去的几个月里,我们一直在使用一种完全不同的方法:亚马逊负载均衡器 (AWS ELB) 加上谷歌分析(不是内容实验)。(见我上面的评论。)正如我们所希望的,它极大地改善了我们合并回主干的体验。

_gaq.push(['_setCustomVar', 2, varName, varValue, 2]);//https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables
_gaq.push(['_trackPageview']);//This must come AFTER the setCustomVar
//varName should be whatever you want to call the experiment
//varValue should be something like "original" for the original and "variation" for the variation.  We just use "trunk" and [name of variation branch].

明显的缺点是谷歌没有为我们做数学计算(告诉我们变化是否在统计上显着优于原始版本)并且我们不能轻松地一次运行多个实验。我们也不能有很多变化(我们需要添加比我们想要的更多的负载平衡实例)。

但是出于我们的目的(例如,考虑到不刷新页面对我们的重要性),它比其他方法效果更好。

于 2012-10-18T14:26:45.070 回答
0

@danmaz74 在客户端也仅使用 Google Analytics 采取了一种有趣的方法:

https://github.com/danmaz74/ABalytics

于 2012-11-29T20:22:14.797 回答