Googlebot呈现,索引ajax风格的动态内容由XHR POST驱动8789

谷歌现在呈现并索引客户端ajax风格的JavaScript POST请求。对于那些使用现代JavaScript查询在线资源api并在页面中生成动态内容的人来说,这是一个好消息,因为这样的动态内容现在终于与页面上的其余静态内容一起建立了索引。这是一个使用Evergreen Chromium进行的开发,尽管以前支持一些AJAX链接爬行。谷歌否定了自己以前的建议:“浏览器可以运行JavaScript并动态生成内容——爬虫不能。”

HTTP的背景

HTTP标准描述了许多请求类型,其中GET使用最广泛。例如,当你在URL地址栏中输入URL,或者点击链接和书签时,浏览器就会使用GET来检索URL。POST请求类型与GET的不同之处在于,它附带一个有效负载定义,该定义意味着要在服务器上解压缩,以便与应用程序程序一起使用。HTML表单使用POST从输入字段发送文本,以便在服务器上进行处理。

职位问题

经过早期的试验,搜索引擎通常会避免为自己发出POST请求而播种输入字段。如果一个网站是用有价值的数据库内容创建的,可以通过网站搜索引擎字段访问,而不容易发现链接到其结果页,我们不会期望它被索引——即使是今天的Googlebot。这些传统的索引问题也会影响到客户端XHR POST请求的页面。

随着JavaScript的快速发展,在jQuery出现之前,客户端POST请求就已经通过浏览器的XMLHttpRequest (XHR)对象以编程方式可用了。XHR允许浏览器中的JavaScript执行查询在线资源API的子请求,并检索信息以“动态”生成内容。

一些POST请求现在使用谷歌

谷歌的新常青谷歌bot现在可以爬行和索引XHR POST请求。这个问题是由技术SEO Valentin Pletzer提出的。Valentin Pletzer一直密切关注google机器人的发展,他检查了浏览器对新兴的JavaScript特性的支持。请注意,其他爬虫程序还没有这个功能。

概念验证

谷歌开发者Martin Splitt一开始对XHR POST请求是否能与新的常青谷歌机器人合作表示怀疑,但好奇心促使他写了一个概念证明,他发现它是可行的。有趣的是,他并没有使用老式的JavaScript XHR模式来编写它,也没有使用jQuery。他使用了ES6的新fetch()方法。查看有关Glitch的源代码。

可能会有很多JavaScript页面使用旧模式编写,特别是jQuery,但使用ES6肯定更有前瞻性。按照逻辑,如果Googlebot可以为XHR解释ES6 JavaScript模式,那么它肯定可以为访问相同的浏览器对象解释旧的JavaScript模式。

注意事项

当谷歌呈现由XHR POST请求方法驱动的动态内容时,每个额外的子请求将计入爬行预算。来自POST事件的内容不会作为页面的一部分缓存,这将通过聚集页面的XHR请求数量减少爬行预算。例如,如果您有100个页面的抓取预算,并且它们的模板对每个动态内容使用一个XHR POST请求,那么看起来只有50个页面会被缓存以供谷歌的搜索索引使用。

滚动至顶部