Эксперименты по контенту 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 на стороне клиента: