2012-07-09 32 views
4

基本上,我們想要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還在尋找其他的東西嗎?

+0

我們現在正在考慮使用一種不同的方法:使用Amazon負載均衡(AWS ELB )將「原始」部署到某些服務器,將「變體」部署到另一臺服務器。由於我們使用4個負載均衡的服務器,因此我們將使用3比1的比例(75%的訪問者將獲得原始數據)。我們啓用了「粘性」來保持個人的經驗一致。這種方法的巨大優勢是在實驗之後不會有條件的(if/else)代碼被移除。只是從分支正常合併回到主幹。 – Ryan 2012-08-10 19:13:11

回答

3

過去幾個月我們一直使用完全不同的方法: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]. 

明顯的缺點是,谷歌並沒有爲我們做數學題(告訴我們的變化是否有統計學顯著優於原來的),而且我們不能輕易地同時運行多個實驗。我們也不會有很多變體(我們需要添加比我們想要的更多的負載均衡實例)。

但是出於我們的目的(例如,鑑於它對我們不重新刷新頁面有多重要),它比其他方法效果更好。

+0

不錯的做法,我知道這是舊的,但我認爲customVariable和trackPageView只是跟蹤每個變體有多少訪問者,但是,您是否使用了一些事件跟蹤或某件事來衡量一種變體的效果? – 2014-06-17 14:45:19

+0

我不記得2012年我在做什麼的細節,但是,我必須記錄事件(分數的分子)。 – Ryan 2014-06-17 18:31:36

0

@ danmaz74了一個有趣的方法,這僅使用谷歌Analytics(分析)的客戶端以及到:

https://github.com/danmaz74/ABalytics

+0

客戶端解決方案對A-B測試佈局不太有用(如問題中提到的)。 – Ryan 2012-11-29 20:29:10

相關問題