为了了解 JavaScript 如何影响 SEO,我们需要了解 GoogleBot 抓取网页时究竟发生了什么:
爬行
使成为
指数
首先,Googlebot 会逐页抓取队列中的 URL。抓取工具会向服务器发出 GET 请求(通常使用移动用户代理),然后服务器会发送 HTML 文档。
然后,Google 决定哪些资源是呈现页面主要内容所必需的。通常,这意味着只抓取静态 HTML,而不抓取任何链接的 CSS 或 JS 文件。为什么?
据 Google 网站管理员称,Googlebot 已发现约130 万亿个网页。大规模渲染 JavaScript 的成本可能非常高昂。批量下载、解析和执行 JavaScript 所需的计算能力非常强大。
这就是 Google 可能将 JavaScript 渲染推迟到 菲律宾电报号码 稍后的原因。任何未执行的资源都会排队等待 Google Web Rendering Services (WRS) 处理,直到计算资源可用。
最后,Google 会索引 JavaScript 执行后呈现的任何 HTML。
Google 抓取、渲染和索引过程。
换句话说,Google 分两波抓取和索引内容:
第一波索引,或即时抓取网络服务器发送的静态 HTML
第二波索引,或延迟抓取通过 JavaScript 呈现的任何其他内容
Google wave 索引。资料来源:Google I/O'18
最重要的是,依赖于 JS 呈现的内容可能会在 Google 的抓取和索引过程中出现延迟。这过去可能需要几天甚至几周的时间。例如,Googlebot 过去一直运行在过时的 Chrome 41 渲染引擎上。然而,近年来,他们已经显著改进了其网络爬虫。
Googlebot最近于 2019 年 5 月升级到 Chromium 无头浏览器的最新稳定版本。这意味着他们的网络爬虫现在“常青”,并且与 ECMAScript 6(ES6)及更高版本或最新版本的 JavaScript 完全兼容。
那么,如果 Googlebot 现在从技术上可以运行 JavaScript,为什么我们还要担心索引问题?
简而言之,就是抓取预算。这是因为 Google 的计算资源有限,所以对抓取特定网站的频率有所限制。我们已经知道,Google 会将 JavaScript 推迟到稍后执行,以节省抓取预算。
虽然抓取和渲染之间的延迟已经减少,但不能保证谷歌会真正执行在其 Web 渲染服务队列中等待的 JavaScript 代码。
以下是 Google 可能实际上永远不会运行你的 JavaScript 代码的一些原因:
在 robots.txt 中被阻止
超时
错误
因此,当核心内容依赖于 JavaScript 但未被 Google 呈现时,JavaScript 可能会导致 SEO 问题。