基本上,我們想要A/B測試2個不同的頁面佈局標題。有一些結構性差異(它不僅僅是切換CSS)。我們也不想等谷歌翻轉硬幣來確定訪問者應該看到哪種變化;相反,我們希望選擇變體服務器端並避免頁面重定向。谷歌分析內容實驗A/B測試服務器端代碼沒有頁面刷新
下面的代碼做我希望的;它生成的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;
}
爲什麼我的谷歌Analytics(分析)內容實驗儀表盤顯示我的實驗中的任何訪客,然後呢?我不完美地設置utmx cookie嗎?除了設置UTMX cookie之外,GACE還在尋找其他的東西嗎?
我們現在正在考慮使用一種不同的方法:使用Amazon負載均衡(AWS ELB )將「原始」部署到某些服務器,將「變體」部署到另一臺服務器。由於我們使用4個負載均衡的服務器,因此我們將使用3比1的比例(75%的訪問者將獲得原始數據)。我們啓用了「粘性」來保持個人的經驗一致。這種方法的巨大優勢是在實驗之後不會有條件的(if/else)代碼被移除。只是從分支正常合併回到主幹。 – Ryan 2012-08-10 19:13:11