Эксперименты по контенту Google Analytics A/B тестирование серверного кода без обновления страницы

По сути, мы хотим протестировать 2 разных заголовка макета страницы. Есть некоторые структурные различия (это не просто выключение CSS). Мы также не хотим ждать, пока Google подбросит монету, чтобы определить, какой вариант должен увидеть посетитель; вместо этого мы хотим выбрать вариант на стороне сервера и избежать перенаправления страницы.

Код ниже делает то, что я надеялся; сгенерированный cookie UTMX выглядит идентично тому, который сгенерировал бы предоставленный Google javascript, если бы я не опустил его из тега head.

Серверный 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 не отображаются посетители моего эксперимента? Я неправильно установил cookie utmx? Кроме установки файла cookie UTMX, GACE ищет что-то еще?

2 ответа

Решение

В течение последних нескольких месяцев мы использовали совершенно другой подход: балансировщики нагрузки Amazon (AWS ELB) и Google Analytics (не контент-эксперименты). (См. Мой комментарий выше.) Как мы и надеялись, это значительно улучшило наш опыт слияния обратно в магистраль.

_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].

Очевидными недостатками является то, что Google не выполняет математические расчеты за нас (сообщая нам, статистически значимо ли это изменение превосходит оригинал), и что мы не можем легко провести несколько экспериментов одновременно. Мы также не смогли бы иметь много вариантов (нам нужно было бы добавить больше экземпляров с балансировкой нагрузки, чем мы бы хотели).

Но для наших целей (например, учитывая, насколько важно для нас не обновлять страницу), он работал лучше, чем другие подходы.

@danmaz74 применил к этому интересный подход, используя только Google Analytics на стороне клиента:

https://github.com/danmaz74/ABalytics

Другие вопросы по тегам