彭琪谈编程

GWO使用心得

GWO即google website optimizer,是一款用来给网页做A/B testing的工具。在我的一个项目里经常会用到这个工具来选择转化率最高的广告,然而在使用时我曾碰到一个很棘手的问题——抓不到数据。

这个问题通常只会在一种情况下发生,离开当前页面前(提交表单或点击链接时)计算转化。在抓耳挠腮了数周时间依然百思不得其解之后,我终于在一个google员工的博客里找到了答案

gwo的原理和google analytics类似,通过向google服务器请求一个图片来发送数据。然而当浏览器获得一个图片请求时,它并不是马上就会发送这个请求,而是会将这个请求放入一个队列,等上一段时间(可能就是几毫秒)后再请求。问题就出在这关键的几毫秒时间里!如果浏览器在这段时间里得知它需要加载一个新的页面,那么它会将队列里老页面残余的请求直接丢掉!这就是我的实验为何没有抓到数据的原因,我的图片请求直接被浏览器丢弃了!

问题终于找到了,那么该怎么解决呢?这篇博客的作者给出了一个很简单的办法,即等上100毫秒再请求新页面。

1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
function doGoal(that) {
  try {
    var pageTracker=_gat._getTracker("UA-123456-1");
    pageTracker._trackPageview("http://www.example.com");
    setTimeout('document.location = "' + that.href + '"', 100)
  }catch(err){}
}
</script>

<a href="www.example.htm" onclick='doGoal(this);return false;'>Click me</a>

100毫秒的时间足够浏览器将队列里的图片请求发出去,又不会让人感到任何等待时间上的差异,很好的解决了这个问题。我的实验终于能正常的抓到数据了,困扰我几周的难题终于搞定。

Comments