大概在半年前我参加了一个国外优惠券聚合平台的项目,项目背景简单介绍下:网站聚合展示很多品牌的最新优惠券,用户可以在里面查看及搜索不同品牌的最新优惠券,优惠券分为两类,用户点击后有展示优惠码的,也有点击后跳转到品牌折扣页的,通过Google相应品牌折扣关键词引流。网站的优惠券来源于两类渠道,一类是Aff网盟平台,我们网站对接了三个平台,包括shareasale、linkshare、CJ。另一类是社交平台,主要是Twitter平台。第一类平台通过接口对接拉取数据自动入库上架至我们网站,人工主要在这几个网盟平台申请各品牌的优惠券offer即可。对于网盟平台的优惠券offer,用户点击优惠券跳转到品牌官网后购买此商品我们有佣金提成,不同商品的提成佣金率不同。第二类如Twitter平台的优惠券没有提成,不过量特别大,可以扩充我们的优惠券数量,也可以提高我们网站的页面数量和Google收录页面。
一开始我们网站只是对接了三个网盟平台,此时网站的第一版本已经上线,优惠券数量大概有三万个有效的,品牌页为三千个,我们网站的设计是以品牌页为聚合的,也就是第一版网站只有大概三千多个页面,为了提高Google的收录页面,我们开始做SEO优化,基本的SEO优化有网站Html优化、Sitemap、Title、Keywords、Description、Meta、品牌索引页面、长尾词建设、外链建设、url优化、站内搜索等。外链建设在短时间内就做到了上万个以上了,长尾词也做到了七八千个,所以页面暴增到了一万二左右,长尾词页面内也做了SEO优化,包括相似长尾词推荐,相似品牌推荐等。当时日志监控观察到Google爬虫每日爬取频率变高,收录也到了两三千,有一些品牌词已经有了排名,一切都在向好的方向发展。这其中有个隐患是我们当时上线时没有预料到的,也为项目以后出现问题埋了一个雷,就是我们刚上线时用的是一个新的普通的域名,但是项目组因为某些原因得到了一个大概有10年历史的老域名,这个老域名自己有一些外链可以带来一些流量,应该是之前做过一些网站导致外链带来的量,本以为这个老域名可以带来不错的收录权重,所以就在上线一周后立即切换成这个老域名了,现在网站已经有两个版本了,一个是老版本新域名,一个是新版本老域名(自带流量),因为项目组人力有限,就主要给这个老域名的网站上加新功能,之前的新域名就没人维护暂时通过robots屏蔽爬虫放置了一段时间。
很快我们发现了问题所在,Google在收录页面的时候一直有问题,先是缓存一直404,然后我们网站加载速度很慢,在google page speed测速里面评分在60分左右,所以我们花了一周时间去给网站提速,加了CDN,优化了网站渲染的代码逻辑,简化前端JS和CSS文件大小,优化图片大小等,然后网站速度得到了提升,加载可以在2秒内完成,服务器响应时间控制在了200ms内,但是Google的缓存页面一直有问题,最后SEO们排查说这是Google的问题,而且Google官方也说这是Google内部服务器的问题,只要索引正常就没问题,当时我们也就没管这个问题。不过始终困扰我们的问题是Google的收录页面一直不稳定,早上是几百个,下午又变成几千个了,而且Google带来的SEO流量一天也徘徊在几十个左右。
项目第二期着重提高Google收录页面,当时SEO们认为是网页相似度太高了,所以我们花了一两周时间去研究是不是我们网站的内容太相似了,所以对于可能相似的页面做了一些随机差异化处理,让网站的某一部分每次刷新都随机,虽然这种方式对爬虫不太优化,但是可以确保网页的相似度变低,我写了一个python的程序去检查我们全站的上万个页面,先用爬虫爬取了两天时间爬取到页面然后自动去渲染截图下来,然后从html里抽取出文本,对文本计算余弦相似度,最后随机筛选出一千个页面,两两比较相似度画对比图,发现全站的相似度并不高,而且竞品的网站的相似度和我们差距也不是很大,因为大家数据都是从网盟平台拿到的,所以数据应该是差不多的。然后Google的缓存终于正常了,不过显示的却是移动端的界面,这其实很奇怪,因为Google有两个版本的bot,一个是移动端,一个是PC端,我们网站会通过UA检测给与不同模板的html代码,只是Google最终给的是移动端的缓存版本,移动端缓存版本显示还不正常,最后排查是前端的一个组件是用了某个Google不兼容的技术导致的,最终把这个问题fix后,又是一周时间去观察,收录还是不正常。
第三期还是解决收录不正常的问题,然后我们把问题聚焦在了内容上,因为内容都是从网盟拉取过来的接口数据,所以差异化和竞品差不多,为了提高网站的内容,我们选择了爬取社交网站的信息来生成优惠券,因为很多品牌会在设交站发布自家品牌的优惠券信息,所以我们调研后确定爬取Twitter的推文,我搭建了一个Twitter的分布式爬虫系统,定时每秒去Twitter里搜索优惠券相关的关键词,然后爬取相关推文入库,然后后台有个python程序每天定时去库里拿到前一天爬取到的推文,经过算法处理后生成了优惠券格式的信息,另外一个脚本任务会自动把这些生成的信息经过去重后发布到我们网站里。加入了Twitter的优惠券后,我们的优惠券数量很快就翻倍了,页面也达到了七八万的规模。因为之前我们分析认为长尾词页面过多了,所以停掉了长尾词页面,外链也开始不断减少,但是此时收录还是不稳定,此时bing的收录页面都上两万了,但是Google的还在两三千徘徊,很不稳定,有时候下午是一万六,早上又变成两千了。和竞品相比,实在是很诡异。
最终我们认为问题大概率出在了域名上,因为不断的排查测试都没有解决问题,就是域名一直没有去测试,因为域名换了后很多工作都白做了,但是我们又想去测试是不是域名导致的问题,所以又把之前的新域名启用了,在之前的新域名做了一个简化版的优惠券系统,用来和老域名这个网站做对比,观察了一段时间后,之前新域名的系统收录也出问题了,SEO们认为是之前我们在发布系统的时候两个域名曾经发生过关联,可能会被Google检测出来,然后这法子就行不通,此时我们又准备去启用一个域名去测试,同时制定了一个建设一个流量站去给优惠券平台导流的计划。不过所有的这一切都没来得及去做,公司最终以项目时间过长为由停掉了开发新功能的计划,只是把网站放着等待收录正常。