常青谷歌机器人与铬渲染引擎:什么技术seo需要知道今日郎溪论坛

这是激动人心的一周,2019年谷歌I/O活动发布了重要的公告。也许最具影响力的公告是谷歌现在已经承诺定期更新它的Googlebot抓取服务,开始使用他们的headless Chromium渲染引擎的最新稳定版本。这是一个重大的飞跃,与之前的版本相比,现在支持了1000多个特性。

几乎所有的新特性都是官方称为ECMAScript (ES6)的现代JavaScript语法。如果您是一名JavaScript开发人员,您确实希望使用该语言的最新版本来访问语法糖,这些语法糖随着语言的成熟而不断出现。的确,如果您是普通的JavaScript用户,或者您喜欢现代的反应式框架,那么许多漂亮的新特性都来自于为常用代码块推荐更好的模式的开发人员。

一个基本的例子是向数组中添加一个值,这是使用push()做的很常见的事情:

<脚本>

名称= [

“艾米”,

“布鲁斯”,

“克里斯”

];

names.push(大卫);

> < /脚本

简单来说就是反应性

在上面的示例中,定义了一个名称数组,并给它分配了3个值:Amy、Bruce和Chris。然后使用push()方法将David添加到列表中。在现代的反应性框架中,值的变化可以触发“差异”评估一个页面DOM相对于框架的更新的“虚拟DOM”,由于数组值不同,页面值可以通过JavaScript更新而不需要重新加载浏览器窗口。

面对web的应用程序中的反应能力是JavaScript真正为我们增加能力的地方,而且随着现代JavaScript在服务器和浏览器上的进一步发展,我们的能力也在不断进步。要跟踪为服务器编写的JavaScript与发送到浏览器的JavaScript之间的差异是很棘手的。例如,在ES6中,您可以完成以下操作,包括在定义语句中使用“let”(和“const”)的能力:

<脚本>

让names = [

“艾米”,

“布鲁斯”,

“克里斯”

];

=[…name, ‘David’];

> < /脚本

向后兼容性

上面的name数组突变使用了一个较新的’ spread操作符’语法[…names]来表示names数组的当前值,然后使用赋值操作而不是push()方法添加David。新的语法与Chrome 41不兼容,因此在Googlebot升级到Chrome 74之前不能工作。对于开发人员来说,为了向后兼容性而不得不编写或修改ES6就像是被千刀切掉一样。

现在,现代的JavaScript语法将在很大程度上直接与Googlebot一起工作,并且有几十个新功能,如上面的一个。要知道,Bing和DuckDuckGo(以及社交分享爬虫)可能无法解释ES6的语法。

现实生活中的例子

最近,Svelte框架进行了重大更新,并被修改为版本3。随着这一重大改革,更精确地触发了基于分配的页面反应。有一个关于它的有趣视频正在流传。为了使Svelte中谷歌的“name”数组代码转换为较旧的push()语法,需要额外的一步,因为push()向数组添加值,但它不是变量赋值操作,而在Svelte 3中,这是触发页面反应所必需的。

<脚本>

让names = [

“艾米”,

“布鲁斯”,

“克里斯”

];

names.push(大卫);

名称=名称;//触发苗条的反应

> < /脚本

很容易看到为什么现在能够使用ES6:

<脚本>

=[…name, ‘David’];

> < /脚本

对苗条的用户来说,比以前更适合开发人员。

常绿铬呈现

现在Googlebot的长青铬渲染引擎可以依靠,React, Angular, Vue, Svelte 3,和香草JavaScript用户可以少担心特定于Chrome 41的填充和编写或转移下来的ES6语法项目了。然而,担忧仍然存在。您需要测试并确保渲染引擎按照您预期的方式运行。谷歌在公开其资源方面比用户的浏览器更加谨慎。

谷歌建议用户查看文档,以找到对谷歌的Web渲染服务(WRS)实例的引用:基本上是Chromium 74,目前用于移动友好测试和URL检查工具等产品中。例如,一个地理位置脚本可能会请求浏览器位置服务。谷歌的渲染引擎不会公开那个API。JavaScript中的这些异常可能会停止索引。

跟踪广告的

如果你仍然在你的服务器日志中跟踪来自旧版本Chrome的访问,最终他们会更新user-agent字符串来反映他们正在运行的Chrome版本。另外,请记住谷歌是一个相当大的、分散的公司,它的各个部门对它的网络资源有不同的访问权限。一个特定的部门可能需要修改设置来实现

滚动至顶部