重定向流量百分比

时间:2015-03-19 20:07:10

标签: php codeigniter redirect ab-testing

我正在尝试将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分钟转到一个站点)。有谁能发现问题?

2 个答案:

答案 0 :(得分:0)

创建一个包含int类型字段的表。 在主控制器索引功能中,将该值递增1。 然后检查它的值,如果它是&gt; =到10然后使用redirect()调用并将数据库值设置回0。

答案 1 :(得分:0)

如果您不想更改后端代码,只需编写一个执行重定向的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');
}

这是必要的前端A / B测试的工作原理。 Here您可以在不同百分比的流量和分配条件的许多实验之间看到更复杂的流量分配示例。

但是,在你的情况下,一个简单的if就足够了。