如果你的网站也是面向海外用户的,你肯定会和 Google 有很多的交集,特别是在 Google SEO的流量导流优化方面。
通常对于一个处在发展早期的网站来说,尤其是跨境服务网站,都会非常依赖从 Google SEO渠道获取的所谓免费流量导流。所以很多大中型网站建立独立的页面SEO优化组织,长期持续地优化网站页面,来保障页面面向Google爬虫时是非常友好的,从而帮助爬虫更好地理解所抓取页面的内容。通过这种持续优化跟踪,来持续增加该网站在Google搜索结果里的排名,从而增加Google SEO渠道流量。
但随着业务的发展,页面的建设开发维护很有可能还会持续向SEO妥协,虽然保持了对爬虫的友好,但相对真实用户的性能体验却在下降。遇到这样的问题,该如何选择,或者有其他两全其美的方案吗?
2.2.1 挑战和困难
针对SEO页面的性能优化,会遇到什么问题呢?
● 针对爬虫爬取收录的页面,页面内容必须同步展示。
● HTML 代码和实际展现的内容要保证一定程度的一致性,否则有被认作作弊页面的风险。
在同步展示的要求上面,服务端要在一次请求过程中,把整个页面所有的内容都计算完毕,这就导致了页面在服务端的响应会消耗很多时间。同时一致性的要求,使得在浏览器端方面,我们也不能轻举妄动,极大地限制了各种优化方案的使用。
在必须保障SEO渠道流量不受影响的前提下,针对SEO页面的性能优化一度处于举步维艰的境地。
2.2.2 解决方案
Google官方提供了一个称为Ajax crawlable scheme 的Ajax爬行方案,是Google为了帮助爬虫抓取网络上越来越多的富应用页面产生的内容。
1.Ajax crawlable scheme细节概括
简单地说,整个解决方案是这样工作的。爬虫在页面中发现pretty Ajax URL(基于约定,URL中包括一个“#!”这样的锚点)。接着爬虫会对这个URL做简单的修改,来表明意图:我是来抓取快照的。然后请求服务器。这个时候服务器返回一个包含全部内容的页面快照,由爬虫进行处理。而在搜索引擎结果中,只会展示原先的pretty Ajax URL。
方案如图2-5所示。

图2-5
在实际方案运用中,会有两种不同的实现步骤:
● 通过改造URL,向爬虫表明页面实现了Ajax crawlable scheme。
● 通过页面meta标签,向爬虫表明页面实现了Ajax crawlable scheme。
2.改造URL
改造URL的方案,比较适合原本就是富应用实现的页面,或者希望改造页面使其对爬虫更友好的情况。富应用页面中的很多内容都是通过Ajax异步请求的方式来动态生成的。
所以通过改造URL,让爬虫在抓取原页面内容时,转去抓取页面同步快照。
如果富应用页面URL本身就已经使用了Hash来构造浏览器端的queryString:
www.example.com/info.html#name=mp3
那么通过简单的改造,爬虫就可以知道该页面实现了Ajax crawlable scheme:
www.example.com/info.html#!name=mp3
而当爬虫在抓取页面的过程中遇到上面的URL时,则会将其转换成:
www.example.com/info.html?_escaped_fragment_=name=mp3
在服务端要做的就是,针对转换过的URL请求,返回包含全部内容的页面快照。
这里所谓的“页面快照”可以理解为,应该包含页面中 JavaScript 代码执行完以后出现在页面中的所有内容。
3.页面meta
对于没有Hash的页面,或者不想修改网站的URL结构,担心SEO在老的URL权重建设上归零的站点来说,笔者也提供了另一种方案。
例如,页面原本的URL是这样的:
www.example.com/info/mp3.html
在页面的head标签中,添加如下meta标签内容:
当爬虫在抓取页面过程中遇到上面的URL时,则同样会将其转换成:
www.example.com/info.mp3.html?_escaped_fragment_=
同样,在服务端要做的就是针对转换过的URL请求,返回包含全部内容的页面快照。
如果Google提供的方案可行,它将会带来很大价值:
● 可以放心使用Ajax异步化方案,而不用担心影响SEO。
● 可以基于此方案,进行更深入的前台和后台优化。
● 采用此方案后,针对终端用户的响应和爬虫的抓取响应,可以在后台架构上做分离。在架构分离的前提下,针对终端用户,提供实时信息的响应;针对爬虫,提供一定时间缓存版本的响应。从而提高对爬虫的响应速度,最终减小来自爬虫的抓取压力。
作为网站的管理员,不管所在网站来自Google SEO的导流是大还是小,都需要承担应用新方案所带来的风险。所以明白它所带来的风险,从而循序渐进地测试方案,直到全量铺开,才是正确的方法。
4.风险
Google官方博客表明,他们会相似地对待采用此类方案的Ajax页面,就像对待其他Web传统页面一样,只获取爬虫通过爬行方案提供的方式抓取到此类Ajax页面的完整内容,但不保证此类页面在搜索结果中的排序。一切取决于内容。
Google没有明确表示网站使用该方案可能产生的影响,如果网站非常依赖Google SEO渠道流量的导流,此部分流量的丢失对网站会有很大影响。
所以笔者带着下面的疑问去尝试和实验,进而控制风险:
● 方案是否为Google实验性方案,能否投入生产环境中。
● 对于页面SEO引流效果的影响的未知。
最后笔者经过半年的实验,验证了方案的可行性。并且在实验过程中,方案的应用还增加了SEO渠道的流量。