道哥:前made-in-china SEO人员 现任职途牛网

道哥授权ITSEO首发其文章,如您要转载请注明出处!

对于转载不注明出处者,我们将投诉,并且在itseo中公布其不道德行为!

 

           现在互联网公司越来越流行A/B测试来做网站用户体验的优化,像阿里巴巴英文站首页的改版就是A/B测试不断微调出来的,这也的确是个非常科学的方法。只是对于大中型网站而言,对SEO着陆页做大范围的A/B测试是一个有风险的行为,那么如何降低对SEO流量负面影响的风险,是本篇文章讨论的重点,除此以外我还会总结如何更好的做好AB页面的监控。

 

            第一,我们得先构建详细需求并确认最终目标。在我所接触的项目当中,PM打算改占SEO流量总比达80%的产品页,对页面上的内容结构进行AB测试(同一个页面有AB两种版本,用户被分发AB页面上),希望能找到用户更喜欢的内容呈现顺序及界面还有就是优化用户体验指标(跳出率,平均停留时间等)。由于这个页面是命根子,所以马虎不得。现在了解了PM的想法之后,我就知道,由于涉及了内容变更,所以对SEO多少是有影响的,那么第一个需求确定下来,就是AB测试一定不能影响到SEO流量。第二个需求是,在PM最终看到的数据上,A页面及B页面的访问量数据一定得基本相同,这样才能保证其他的用户体验指标以及转化率指标有参考价值,如果A页面访问量远大于B页面,那么数据就可能存在偏差。除此以外,A,B两种页面的用户群体也得几乎是相同的,这么做同样是为了保证数据的参考价值。

 

             第二,现在我们开始将核心需求细化,落到实处。保证SEO不受影响的根本方法是,保证搜索引擎爬取的页面URL不变,同时不会被分发到A页面以外的其他页面。这里需要用到的就是白帽cloaking,具体方法有两种:1,利用UA判断爬虫,对应返回页面;2,利用蜘蛛不接受cookie这个特点来做判断(类似于lynx -dump)。两者相较后者更适合AB测试,因为本身用户被分发页面时就会用到cookie(比如A页面的cookie值为AB页面的cookie值为B)。所以我当时绘制的理想的路径如下图:

 

 

            但实际上面的这个流程是走不通的,因为我犯了个低级失误,那就是cookie本身的工作机制没有搞清除——用户的cookie是在每次HTTP连接的request headers当中传递的(感兴趣的朋友可以去看报头),也就是说如果顺着我上面的流程走的话,在无cookie的情况下,生成了cookie之后我立马去获取cookie内容是肯定不会获取到的,因为用户的HTTP请求已经发过来了并且开始被程序处理了,这个时候尽管程序判断出来需要生成cookie,而且也的确把cookie保存到了用户电脑,但是除非有第二次HTTP请求,否则你就是获取不到cookie的值。


            那么怎么办呢?那就索性不做二次获取了,而变为固定调用一个页面的模板。但是绝不能是A或者B页面,需要新建一个HTML模板,我称之为默认模板,实际上直接复制A页面模板即可,之所以新加一个模板一是为了保证爬虫的抓取URL及页面内容的不变;二是为了新访客的访问不被计入到A页面,而导致整体访问量上AB页面的失衡;三是为了划分用户群体,新增了这个默认模板后,所有参与AB测试的都是同一群体用户——PV/VISITS大于等于2。一石三鸟看似美好,但也损失了一些部分测试用户的访问量。其实如果要进一步优化的话,在随机生成cookie的步骤后面可以增加对蜘蛛UA的判断,如果UA为蜘蛛则调用默认页面模板,否则根据cookie值调用A或B页面的模板即可。这里稳妥起见,而且样本数量也足够了,所以没做。

 

最终流程如下下图所示

 

 

第三,其他的一些注意点及辅助工具:

1GA统计代码上需要小调整,主要是调整trackPageview属性,默认页面用_gaq.push(['_trackPageview']);A页面改写一下_gaq.push(['_trackPageviwe','A页面']);A页面这几个字随便改,比如可以改成测试页面的URL加个后斜杠然后加个A这种:“/product/123456/a”B页面同样改就行了。

 

2,做完页面名称自定义后用正则即可匹配出AB页面,这时一定得在GA中新建两个自定义报告分别拆分AB两个页面的访问指标(高级细分很悲剧的不可以实现,否则对比数据起来就爽多了)

 

3,在AB页面上布置百度热力图或者cnzz的热力图。挑选这两个是因为GAIn-Page Analytics只能统计到用户点击的链接位置,而热力图除此以外还能提供用户在页面上的其他点击行为,比如用户滚屏了多少。从数据上来看,热力图更接近于用户的眼动轨迹,因此价值更高。缺点是貌似只能布置几个页面。。。

 

4,检查AB测试中蜘蛛访问是否正确的方法是禁用浏览器cookie。而如果是要检查AB是否正确就反复清空浏览器cookie访问吧。

 

总结:AB测试并不难做,而且再次证明SEO和用户体验完全不冲突,除非你不懂技术。aliued早在2010年就写过类似的文章,有兴趣的朋友也可以去看看http://www.aliued.cn/2010/09/27/ab-testing-realization-method.html