google-analytics - manager - google optimize
Experimentos de contenido de Google Analytics Prueba de A/B del código del lado del servidor sin actualizar la página (2)
Hemos utilizado un enfoque totalmente diferente durante los últimos dos meses: equilibradores de carga de Amazon (AWS ELB) más Google Analytics (no experimentos de contenido). (Vea mi comentario anterior.) Como esperábamos, ha mejorado mucho nuestra experiencia con la fusión de nuevo al tronco.
_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].
Los inconvenientes obvios son que Google no hace los cálculos por nosotros (nos dice si la variación ha superado estadísticamente significativamente al original) y que no podemos ejecutar fácilmente varios experimentos a la vez. Tampoco podríamos tener muchas variaciones (necesitaríamos agregar más instancias de equilibrio de carga de las que nos gustaría).
Pero para nuestros propósitos (por ejemplo, dado lo importante que es para nosotros no tener una actualización de página), ha funcionado mejor que otros enfoques.
Básicamente, queremos que A / B pruebe 2 encabezados de diseño de página diferentes. Hay algunas diferencias estructurales (no es solo cambiar el CSS). Tampoco queremos esperar a que Google arroje la moneda para determinar qué variación debe ver el visitante; en cambio, queremos elegir la variante del lado del servidor y evitar una redirección de página.
El código a continuación hace lo que esperaba; la cookie UTMX que genera parece idéntica a la que generaría el javascript proporcionado por Google si no la omitiera de la etiqueta principal.
Código PHP del lado del servidor:
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;
}
Entonces, ¿por qué mi panel de Experimentos de contenido de Google Analytics no muestra los visitantes de mi experimento? ¿Configuré la cookie utmx de forma imperfecta? Además de configurar la cookie UTMX, ¿busca GACE algo más?
@ danmaz74 tomó un enfoque interesante al usar solo Google Analytics en el lado del cliente también: