面向大型网站所有者的抓取预算管理指南

本指南介绍了如何优化 Google 对频繁更新的超大型网站的抓取。

如果您的网站中没有大量经常更新的网页,或者您的网页一般在发布当日就被抓取,那么您无需阅读本指南;只需及时更新站点地图并定期检查索引涵盖范围即可。

如果您的内容已发布一段时间,但从未被编入索引,这便是另外一个问题了;请改用网址检查工具以查明网页未编入索引的原因。

本指南的适用对象

这是一个高级指南,适用于:

  • 内容更改较为频繁(每周一次)的大型网站(非重复网页数量超过 100 万个)
  • 内容每日更改飞快的中大型网站(非重复网页数量超过 10000 个)
  • 网站的全部网址中有很大一部分被 Search Console 归类为已发现 - 尚未编入索引

抓取的一般理论

网络是一个近乎无限的空间,Google 无法浏览每个可用网址并将其编入索引。因此,Googlebot 能花在抓取任意单个网站上的时间是有限的。Google 在抓取网站上投入的时间和资源通常称为网站的“抓取预算”。请注意,并非从您网站上抓取的所有内容都一定会编入索引;我们必须对每个网页进行评估和整合,以确定在抓取该网页后是否将其编入索引。

抓取预算由两个主要元素决定:抓取容量上限和抓取需求

抓取容量上限

Googlebot 不希望在抓取您的网站时,导致您的服务器过载。为防止出现这种情况,Googlebot 会计算抓取容量上限,即 Googlebot 最多可以使用多少同时载入的并行连接来抓取网站,以及各次抓取之间的时间延迟。计算抓取容量上限是为了既能涵盖您的所有重要内容,又不会导致您的服务器负载过重。

抓取容量上限可能会升高或降低,具体取决于下面这几个因素:

  • 抓取状况:如果网站在一段时间内的响应速度很快,则抓取容量上限会升高,即 Googlebot 可以使用更多的连接进行抓取。如果网站运行速度变慢或出现服务器错误,这一上限便会降低,Googlebot 能抓取的网页随之减少。
  • Google 的抓取上限:虽然 Google 的计算机数量很多,但不是无穷尽的。我们仍需根据已有的资源做出选择。

抓取需求

通常,Google 在抓取网站时会根据需要来分配抓取时间,具体取决于该网站的规模、更新频率、网页质量和相关性(与其他网站相比)。

下面这几个因素在确定抓取需求方面起着重要作用:

  • Google 感知到的网址目录:如果没有您的引导,Googlebot 会尝试抓取在您网站上发现的所有或大多数网址。如果这些网址中有很多是重复的,或者您由于其他某种原因(网址已被移除、不重要等)不希望 Google 抓取这些网址,则它们会浪费大量 Google 抓取您网站的时间。这一因素是最能得到您的积极控制的。
  • 热门程度:Googlebot 往往会更加频繁地抓取互联网上较为热门的网址,以便在我们的索引中及时更新这些网址的内容。
  • 过时性:我们的系统希望尽可能频繁地重新抓取文档,以便将所有更改收入囊中。

此外,诸如网站迁移之类的网站级事件也可能会导致抓取需求上升,以便将新网址下的内容重新编入索引。

总结

在综合考虑了抓取容量和抓取需求之后,Google 将网站的“抓取预算”定义为 Googlebot 可以且希望抓取的一组网址。即使未达到抓取容量上限,如果抓取需求较低,Googlebot 也会降低对您网站的抓取频率。

最佳实践

请遵循以下最佳实践,以便最大限度地提高抓取效率:

  • 管理网址目录:使用适当的工具告知 Google 要抓取哪些网页和不抓取哪些网页。如果 Google 花费太多时间抓取不适合编入索引的网址,Googlebot 就可能认为不值得花时间查看您网站的其余部分(或为此增加您的抓取预算)。
    • 整合重复内容彻底移除重复内容,将重点放在抓取独特内容而非唯一网址上。
    • 使用 robots.txt 禁止抓取网址某些网页可能对用户很重要,但您不一定希望它们显示在搜索结果中。例如在链接页上显示重复信息的无限滚动网页或以不同方式排序的同一网页。如果您无法按照第 1 条中的说明整合此类网页,请使用 robots.txt 屏蔽这些对搜索引擎来说不重要的网页。使用 robots.txt 屏蔽网址会显著降低网址被编入索引的几率。
    • 针对永久移除的网页返回 404410 状态代码。Google 不会忘记自己发现的网址,但 404 状态代码会明确告知 Google 不要再次抓取该网址。 但是,被屏蔽的网址将会在您的抓取队列中保留较长一段时间,并会在取消屏蔽后被重新抓取。
    • 消除 soft 404 错误。系统会继续抓取 soft 404 网页,这会浪费您的预算。请查看“索引涵盖范围”报告中是否存在 soft 404 错误。
    • 及时更新站点地图。Google 会定期读取您的站点地图,因此请务必添加您希望 Google 抓取的所有内容。如果您的网站包含更新后的内容,我们建议您添加 <lastmod> 标记。
    • 避免使用很长的重定向链,以免对抓取产生负面影响。
  • 提高网页的加载速度 如果 Google 能够更快地加载和渲染您的网页,我们或许可以从您的网站中读取更多内容。
  • 监控网站抓取情况。 监控您的网站在抓取过程中是否会出现可用性问题,并寻找方式来提高抓取效率。

监控网站的抓取和索引编制情况

以下是监控您网站的抓取配置文件的关键步骤:

  1. 查看 Googlebot 是否在您的网站上遇到了可用性问题
  2. 查看您是否有未被抓取但应被抓取的网页
  3. 查看是否需要提高网站中某些部分被抓取的速度
  4. 提高您网站的抓取效率
  5. 处理网站被过度抓取的问题

查看 Googlebot 是否在您的网站上遇到了可用性问题

改善网站的可用性不一定会增加抓取预算;如前所述,Google 会根据抓取需求来确定最佳抓取速度。但是,可用性问题确实会导致 Google 无法按照其期望的频率来抓取您的网站。

诊断

“抓取统计信息”报告中查看 Googlebot 对您网站的抓取历史记录。该报告会显示 Google 何时在您的网站上遇到了可用性问题。如果系统针对您的网站报告了可用性错误或警告,请在主机可用性图表中查找 Googlebot 请求超出上限(用红线表示)的实例,点击进入图表查看哪些网址不可用,并尝试将这些网址与您网站上的问题关联起来。

此外,您还可以使用网址检查工具测试您网站上的多个网址。如果该工具返回已超出主机负载警告,则表示 Googlebot 从您的网站中抓取的网址会少于它在其中发现的网址。

解决方案

  • 请查看“抓取统计信息”报告文档,了解如何查找和处理一些可用性问题。
  • 如果您不希望 Google 抓取您的网页,请禁止 Google 抓取该网页。(请参阅管理您的网址目录
  • 提高网页加载和渲染速度。(请参阅提高您的网站抓取效率
  • 增加服务器容量。如果 Google 在抓取网站时似乎一直达到服务器容量上限,但您仍有一些重要网址的抓取和更新频率达不到其所需频率,那么,提供更多服务资源可能会使 Google 能够请求抓取您网站上的更多网页。请在“抓取统计信息”报告中查看您的主机可用性历史记录,了解 Google 的抓取速度是否经常超出上限。如果是,请增加服务资源达一个月,并查看抓取请求数在这一时间段内是否增加了。

查看您网站中是否有应被抓取但未被抓取的部分

Google 会在您的网站上花费尽可能多的时间,以便将其能够找到的所有对用户有价值的高品质内容编入索引。如果您认为 Googlebot 遗漏了重要内容,可能是因为它不知道该内容、该内容已对 Google 屏蔽,或者您的网站可用性限制了 Google 的访问权限(或者 Google 在尽力不让您的网站负载过重)。

诊断

Search Console 不会为您的网站提供可以按网址或路径过滤的抓取历史记录,但您可以检查网站日志,看看特定网址是否已被 Googlebot 抓取。这些已抓取的网址是否已被编入索引就另当别论了。

请注意,对于大多数网站,新网页至少需要几天时间才能被发现;大多数网站的网址都不会在当天被抓取,但新闻网站等具有时效性的网站除外。

解决方案

如果您向网站添加了网页,但这些网页未在合理的时间内被抓取,可能是因为 Google 不知道这些网页、相关内容已被屏蔽、您的网站已达到服务器容量上限,或者您已超出抓取预算

  1. 将新网页告知 Google:更新站点地图以反映新网址。
  2. 检查您的 robots.txt 规则,确认您没有意外屏蔽网页。
  3. 查看抓取优先级(也就是明智地使用抓取预算)。管理您的网址目录提高您的网站抓取效率
  4. 确保您没有用完服务器容量。 如果 Googlebot 检测到您的服务器在响应抓取请求时遇到问题,将会降低抓取速度。

请注意,如果相关内容没有足够的价值或用户需求,那么即使网页被抓取,也可能不会显示在搜索结果中。

查看更新内容的抓取速度是否足够快

如果我们遗漏了您网站上的新网页或更新过的网页,可能是因为我们没有发现这些网页,或者没有注意到这些网页已更新。您可以通过以下方式帮助我们了解网页更新。

请注意,Google 一直在努力及时检查网页并将其编入索引。对于大多数网站,此过程至少需要三天的时间。除非您的网站是新闻网站或包含其他高价值、极具时效性的内容,否则不要指望 Google 会在您发布网页的当天将其编入索引。

诊断

检查您的网站日志,了解 Googlebot 何时抓取了特定网址。

若要了解编入索引的日期,请使用网址检查工具或在 Google 上搜索您更新的网址。

解决方案

正确做法

  • 如果您的网站包含新闻内容,请使用 Google 新闻站点地图
  • 在站点地图中使用 <lastmod> 标记指明编入索引的网址的更新时间。
  • 使用简单的网址结构帮助 Google 找到您的网页。
  • 提供标准可抓取的 <a> 链接,以便 Google 找到您的网页。

应避免以下做法

  • 每天多次提交同一个未更改的站点地图。
  • 期望 Googlebot 抓取站点地图中的所有内容,或立即抓取这些内容。 站点地图可以为 Googlebot 提供实用的建议,但不是绝对要求。
  • 在站点地图中添加您不希望显示在搜索结果中的网址。 这可能会将您的抓取预算浪费在您不希望编入索引的网页上。

提高您网站的抓取效率

提高网页加载速度

Google 的抓取过程受带宽、时间和 Googlebot 实例可用性的限制。 如果您的服务器能够更快地响应请求,我们或许可以抓取您网站上的更多网页。即便如此,Google 只想抓取优质内容,因此单靠提高质量低劣网页的加载速度并不能鼓励 Googlebot 抓取您网站上的更多内容;相反,如果我们认为我们遗漏了您网站上的优质内容,可能会增加预算来抓取这些内容。

您可以通过以下方法优化您的网页和资源以供抓取:

  • 使用 robots.txt 阻止 Googlebot 加载较大而不重要的资源。 确保仅屏蔽非关键资源,即对理解网页含义无关紧要的资源(如装饰图片)。
  • 确保网页能够快速加载。
  • 留意很长的重定向链,以免对抓取产生负面影响。
  • 响应服务器请求花费的时间以及渲染网页所需的时间都很重要,包括嵌入式资源(例如图片和脚本)的加载时间和运行时间。请注意需要编入索引的较大或加载速度缓慢的资源。

使用 HTTP 状态代码指定内容更改

Google 通常支持使用 If-Modified-SinceIf-None-Match HTTP 请求标头进行抓取。Google 抓取工具不会在每次尝试抓取时都发送标头;这取决于请求的用例(例如,AdsBot 更有可能设置 If-Modified-SinceIf-None-Match HTTP 请求标头)。如果我们的抓取工具发送 If-Modified-Since 标头,则该标头的值就是上次抓取相应内容的日期和时间。服务器可能会根据该值选择返回不含响应正文的 304 (Not Modified) HTTP 状态代码,在这种情况下,Google 会重复使用上次抓取的内容版本。如果内容晚于抓取工具在 If-Modified-Since 标头中指定的日期,服务器可能会返回包含响应正文的 200 (OK) HTTP 状态代码。

如果自 Googlebot 上次访问相应网址后内容未发生更改,那么无论请求标头是什么,您都可以针对任何 Googlebot 请求发送没有响应正文的 304 (Not Modified) HTTP 状态代码。这样可以节省服务器处理时间和资源,可能会间接提高抓取效率。

隐藏您不希望显示在搜索结果中的网址

将服务器资源浪费在不必要网页上会减少真正重要网页被抓取的机会,这可能会显著延迟我们在网站上发现精彩新内容或更新后内容的时间。

如果 Google 搜索服务发现您网站上有很多不希望被抓取的网址,可能会对网站的抓取及索引编制造成不利影响。通常,这些网址分为以下类别:

  • 分面导航会话标识符:分面导航通常是来自网站的重复内容;会话标识符以及其他仅用于排序或过滤网页的网址参数不会提供新内容。使用 robots.txt 屏蔽分面导航网页。
  • 重复内容:帮助 Google 识别重复内容,以避免不必要的抓取。
  • soft 404 网页:当网页不再存在时,返回 404 代码。
  • 被黑网页:请务必查看“安全问题”报告,并修正或移除所发现的所有被黑网页。
  • 无限空间和代理:使用 robots.txt 禁止 Googlebot 抓取这些内容。
  • 低劣品质和垃圾内容:显然,最好避免此类内容。
  • 购物车网页、无限滚动网页和执行某项操作的网页(例如“注册”或“立即购买”网页)。

正确做法

  • 如果您根本不希望 Google 抓取某项资源或某个网页,请使用 robots.txt。
  • 如果在多个网页(例如共享的图片或 JavaScript 文件)中重复使用了相同的资源,请在每个网页中通过同一个网址引用该资源,以便 Google 可以缓存和重复使用同一项资源,而无需多次请求同一项资源。

应避免以下做法

  • 请不要为了重新为您的网站分配抓取预算,而定期在 robots.txt 中添加或从中移除网页或目录。请仅对您不想长时间在 Google 中显示的网页或资源使用 robots.txt。
  • 切勿交换站点地图或使用其他临时隐藏机制重新分配预算。

处理您的网站遭过度抓取的问题(紧急情况)

Googlebot 会采用相关算法,以免您的网站因抓取请求而负载过重。 不过,如果您发现 Googlebot 会让您的网站负载过重,可以采取一些应对措施。

诊断

监控服务器,查看 Googlebot 向您网站发出的请求是否过多。

解决方案

在紧急情况下,我们建议您按照以下步骤放慢 Googlebot 的抓取速度:

  1. 当服务器负载过重时,针对 Googlebot 请求暂时返回 503429 HTTP 响应状态代码。Googlebot 会重新尝试抓取这些网址大约 2 天。请注意,如果在数日内返回“no availability”代码,会导致 Google 永久减慢对您网站上网址的抓取速度或永久停止抓取这些网址,因此请按照接下来的后续步骤继续操作。
  2. 当抓取速度变慢时,不再针对抓取请求返回 503429 HTTP 响应状态代码;返回 503429 的时间超过 2 天会导致 Google 从索引中移除这些网址。
  3. 持续监控抓取和主机容量。
  4. 如果存在问题的抓取工具是某个 AdsBot 抓取工具,那么问题可能在于您为 Google 尝试抓取的网站创建了动态搜索广告定位条件。系统每 3 周会再次进行该抓取。如果您的服务器容量不足以处理这类抓取,请限制广告定位条件或增加服务器容量。

关于抓取的误区和事实

检验您对 Google 如何抓取网站并将其编入索引的了解程度。

压缩我的站点地图会增加我的抓取预算。
正确
错误
不会。压缩后的站点地图仍必须从服务器中提取,因此,发送压缩后的站点地图并不能让 Google 节省太多的抓取时间或工作量。
Google 会优先抓取较新的内容,因此我最好不断微调自己的网页。
正确
错误
内容是按质量评分的,与新旧无关。请根据需要创建和更新您的内容,但为了使网页看起来是最新状态,人为地做出一些无关紧要的更改及更新网页日期,这样并不能带来额外效果。
Google 会优先抓取旧内容(具有更高的权重),而不是新内容。
正确
错误
如果您的网页很实用,那就很实用,与新旧无关。
Google 会优先抓取简洁网址,并且不喜欢查询参数。
正确
错误
我们可以抓取参数。
网页的加载速度和渲染速度越快,被 Google 抓取的几率就越大。
正确
一方面是正确的,因为我们的资源同时受到时间与抓取漫游器数量的限制。如果您可以在有限的时间内向我们提供更多网页,我们能够抓取的网页就越多。但是,我们可能会将更多时间投入到抓取包含更重要信息的网站上,即使该网站的运行速度可能更慢。对您来说,让用户更快速地看到您的网站内容可能比提高网站速度以扩大您的抓取涵盖范围更重要。帮助 Google 抓取正确的内容比每次都抓取所有内容要简单得多。请注意,抓取网站涉及检索和渲染内容。渲染网页所花费的时间与请求网页所花费的时间一样重要。 因此,提高网页的渲染速度也会提高抓取速度。
错误
小型网站的抓取频率不及大型网站。
正确
错误
如果某个网站包含经常变更的重要内容,我们便会经常抓取该网站,无论其规模如何。
内容越靠近首页,对 Google 来说就越重要。
正确
部分正确
网站的首页通常是网站中最重要的网页,直接链接到首页的网页可能会被视为更重要,因此抓取频率更高。不过,这并不意味着这些网页的排名会高于网站上的其他网页。
错误
网址版本控制是鼓励 Google 重新抓取我的网页的好方法。
正确
部分正确
使用经版本控制的网址或许能够吸引 Google 尽快重新抓取您的网页,但通常没必要这样做,而且如果网页实际上并未更改,就会浪费抓取资源。如果您使用了经过版本控制的网址指明新内容,我们建议只有在网页内容发生有意义的更改时,才更改网址。
错误
网站速度和错误会影响我的抓取预算。
正确
使网站运行速度变快既能改善用户体验,又能提高抓取速度。对于 Googlebot 来说,网站运行速度快表明服务器运转正常,因此它可以通过相同数量的连接获得更多的网站内容。反之,出现大量的 5xx HTTP 响应状态代码(服务器错误)或连接超时情况则表明服务器运转不正常,因此 Googlebot 的抓取速度会下降。我们建议您密切关注 Search Console 中的“抓取统计信息”报告,并让服务器错误的数量保持较低水平。
错误
抓取是一项排名因素。
正确
错误
提高抓取速度未必会使网站在搜索结果中的排名升高。 Google 会根据多种因素对结果进行排名,虽然抓取是网页显示在搜索结果中的必要条件,但它不是一项排名因素。
备用网址和嵌入式内容会计入抓取预算中。
正确
通常,Googlebot 所抓取的任何网址都会计入网站的抓取预算中。 AMP 或 hreflang 等备用网址以及 CSS 和 JavaScript 等嵌入式内容(包括 XHR 提取)可能必须被抓取,此时它们将会耗用网站的抓取预算。
错误
我可以使用“crawl-delay”规则控制 Googlebot。
正确
错误
“crawl-delay”不是一项标准的 robots.txt 规则,所以 Googlebot 不会处理它。
nofollow 规则会影响抓取预算。
正确
部分正确
被抓取的任意网址都会影响抓取预算,因此即使您的网页将某个网址标记为 nofollow,只要您网站上的其他网页或网络上的任何网页未将相应链接标记为 nofollow,Googlebot 就仍会抓取该网址。
错误
我可以使用 noindex 来控制抓取预算。
正确
部分正确
被抓取的任何网址都会影响抓取预算,Google 必须抓取该网页才能找到 noindex 规则。

不过,noindex 可帮助您将内容排除在索引之外。如果您想确保这些网页最终不会编入 Google 的索引,请继续使用 noindex 而不必担心抓取预算。另外,请务必注意,如果您通过 noindex 或其他方式从 Google 的索引中移除网址,Googlebot 可以专注于访问您网站上的其他网址,这意味着从长远来看,noindex 可以间接地为您的网站释放一些抓取预算。
错误
提供 4xx HTTP 状态代码的网页在浪费抓取预算。
正确
错误
提供 4xx HTTP 状态代码429 除外)的网页不会浪费抓取预算。Google 曾尝试抓取该网页,但只收到状态代码,没有其他内容。