2015-03-19 6 views
1

Я пытаюсь перенаправить 10% моих пользователей на бета-сайт, который мы тестируем. Я использую рамки CodeIgniter и я добавил следующее в файл routes.php:Перенаправление процента трафика

$absplit = 0.1; 
if((mt_rand(0, mt_getrandmax() - 1)/mt_getrandmax() < $absplit)) 
{ 
    header('location: '.str_replace($_SERVER[HTTP_HOST],"x.example.com","http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"),true,302); 
    exit; 
} 

Однако, я заметил, что он перенаправляет почти 40% трафика, и, кажется, перенаправлять в куски времени (например, все пользователи в течение 10 минут переходят на один сайт). Может ли кто-нибудь обнаружить проблему?

+0

для лучшего распространения используйте время в защитниках, перенаправляйте хиты на 1,6,12 .. secounds –

+0

Создайте таблицу с одним полем типа int. В своей основной функции индекса контроллеров увеличьте это значение на 1. Затем проверьте его значение, если оно = = 10, затем используйте вызов redirect() и установите значение базы данных обратно на 0. – PrestonDocks

+0

, если я дважды удалю по тому же URL есть вероятность, что я приземлюсь на разные версии сайта. лучше использовать 'session', чтобы конкретный пользователь находился на любом из сайтов, а не на обоих. –

ответ

0

Создать таблицу с одним полем типа int. В функции индекса вашего главного контроллера увеличивайте это значение на 1. Затем проверьте его значение, если оно = = 10, затем используйте вызов redirect() и установите значение базы данных обратно на 0.

+0

Это на самом деле не является идеальным с точки зрения тестирования, поскольку оно аннулирует результаты, нарушая предположение о случайном выборе групп. Чтобы иметь действительный тест A/B, вы должны использовать случайное назначение. – Nate

0

Если вы 't хотите изменить внутренний код, вы можете просто написать JavaScript, который выполняет перенаправление. Например,

if (Math.random() <= 0.1) { 
 
    location.href = '/url-to-redirect-to'; 
 
}

Если вы хотите, чтобы пользователи имели последовательный опыт. Вы можете сохранить какое-то значение в файле cookie, который укажет, что они имеют или не должны быть перенаправлены.

var cookieValue = cookie.get(key); 
 

 
if (cookieValue === 'redirect' || !cookieValue && Math.random() <= 0.1) { 
 
    cookie.set(key, 'redirect'); 
 
    location.href = '/url-to-redirect-to'; 
 
} else { 
 
    cookie.set(key, 'no-redirect'); 
 
}

Вот как essentialy интерфейсные A/B тестирование работы. Here вы можете увидеть более сложный пример распределения трафика между многими экспериментами с разными процентами трафика и условиями назначения.

Однако в вашем случае простого, если будет достаточно.

Смежные вопросы