Google 搜索如何使用推测规则

发布时间:2025 年 2 月 12 日

Google 搜索是网络上最受欢迎的网站之一,也是速度最快的网站之一。搜索团队一直在不断投资,以提升搜索体验的速度。在 Google 搜索这样热门的网页上,即使只改进几毫秒,也能很快累积起来!这种对速度的重视体现在许多方面,包括广为人知的 Google 首页、搜索引擎结果页 (SERP),以及从这些搜索结果点击进入其他网站。

Google 搜索一直在使用 Speculation Rules API 来提高从搜索结果页到结果链接的导航速度,并且一直在使用该 API 的一些可能对其他网站所有者有用的功能。

预提取前两个结果

推测规则的最初用途之一是预提取前两个搜索结果。例如,搜索“测试”会在网页中包含以下推测规则:

{
    "prefetch": [{
        "source": "list",
        "requires": [
            "anonymous-client-ip-when-cross-origin"
        ],
        "referrer_policy": "strict-origin",
        "urls": [
            "https://www.merriam-webster.com/dictionary/test",
            "https://dictionary.cambridge.org/dictionary/english/test"
        ]
    }]
}

底部的两个网址是前两个搜索结果,系统会立即预提取这两个网址。如果用户点击这些链接,那么他们将抢占先机,因为浏览器应该已经可以访问 HTML 文档。

您可以在开发者工具的“应用”标签页 ->“推测”标签页中看到规则和预取尝试(如前所述):

开发者工具的“推测”面板,其中列出了“text”一词的两个字典定义,这两个定义都已成功预提取
包含两次成功预提取的推测面板。

可保护隐私的预提取

由于这些链接指向其他网站上的内容,因此预提取功能还涉及一些额外的隐私权注意事项,因为用户尚未访问这些网站。

幸运的是,该 API 在设计时考虑到了这一点,Google 搜索正在利用两项功能来保护用户隐私。

第一种方法是使用 requires 配置,以确保预提取使用 Chrome 中的专用预提取代理

"requires": [
    "anonymous-client-ip-when-cross-origin"
],

此功能使用代理来确保连接匿名化 IP 地址,这样一来,在用户点击链接从搜索结果页面前往相应网站之前,我们不会将用户的 IP 地址泄露给该网站。

其次,Google 搜索使用 referrer_policy 设置来确保搜索网页网址中编码的任何详细信息都不会通过 referer HTTP 标头发送到网站:

"referrer_policy": "strict-origin",

大多数浏览器现在默认使用 strict-origin-when-cross-origin,但此设置使用更严格的设置,即使对于同源预提取,也使用 strict-origin referrer-policy。

如果用户拥有相应网站的 Cookie,系统会自动进行第三重保护。在这种情况下,他们可能会根据这些 Cookie 获得不同的结果,并且 Chrome 不会使用预提取的 HTML:

开发者工具的“推测”面板显示了两个网址,但其中一个网址的预提取失败,并显示错误消息,指出该网址不符合预提取条件,因为用户已有相应来源的 Cookie
推测面板,其中一个预提取因 Cookie 而失败。

这意味着,如果用户设置了 Cookie,那么在点击相应网站时,将无法享受预提取功能带来的性能提升,但隐私保护和准确的网页加载会优先考虑。此外,如果用户之前访问过某个网站并拥有该网站的 Cookie,那么他们很可能已缓存该网站的一些资源,即使没有预提取,网页加载速度也可能会更快。

预提取前两项结果对用户的影响

与大多数更改一样,Google 搜索通过 A/B 测试实验推出了预提取功能,并衡量了其影响。他们发现 Largest Contentful Paint (LCP) 有了显著改进。在 Android 版 Chrome 上,来自 Google 搜索的点击的 LCP 缩短了 67 毫秒。随后针对桌面版 Chrome 的发布也带来了类似的改进,LCP 缩短了 58.6 毫秒。这些改进是针对用户前往的网站,而不是 Google 搜索网站本身,但它们有利于 Google 搜索用户。

LCP 的这些改进可能看起来微不足道,但对于像 Google 搜索这样经过高度优化的网站,即使是毫秒级的改进,我们也会为用户感到高兴,因此数十毫秒范围内的改进就更令人惊喜了!您的网站可能会获得显著的优势,您应该尝试一下,看看效果如何!

自 2022 年 10 月以来,Android 版 Google 搜索已默认启用使用推测规则的预提取功能,并于 2024 年 9 月之前推广到桌面设备。

前两项结果之后

自 Speculation Rules API 首次发布以来,它新增了 eagerness 属性,可让系统仅在用户将鼠标悬停在链接上或开始点击链接时进行推测。

Google 搜索决定不仅预提取前两个搜索结果,还预提取其余搜索结果,但仅当用户将鼠标悬停在链接上时才进行预提取,这是通过使用 moderate 迫切程度设置实现的。这样可以避免不必要地浪费资源来处理点击可能性较低的链接。

同样,在 Chrome 中搜索时,您可以在开发者工具中看到该规则,它与之前的规则相同,但这次设置了 "eagerness": "moderate" 选项:

显示列表规则的开发者工具“规则”面板,该规则使用 anonymouse-client-ip-when-cross-origin、strict-origin referrer-policy、moderate eagerness 和七个网址
Google 搜索使用的推测规则。

将光标悬停在这些链接上会触发预提取。请注意,Google 搜索明确列出了网址,而不是使用 Speculation Rules API 的文档规则功能,因为他们不想预提取广告等其他网址。

预提取前两项结果之外的结果对用户的影响

桌面版 Chrome 将 Google 搜索中的导航的 First Contentful Paint (FCP) 缩短了 7.6 毫秒,并将 LCP 缩短了 9.5 毫秒(如 A/B 测试所示)。与前两个结果中看到的 58.6 毫秒的改进相比,这些改进幅度较小,但考虑到它们没有被积极预提取,因此领先时间较短,这并不令人意外。不过,出于之前给出的相同原因,这些仍是良好的增幅。

2024 年 12 月,我们默认推出了桌面设备上剩余搜索结果的预提取功能。

对于通常无法悬停的移动设备,我们没有看到任何实际改进,因此虽然也没有出现任何回归,但这些额外的预取功能并未在移动设备上启用。

Google 仍在对此令人兴奋的新 API 进行实验,希望尽可能加快网页浏览速度。我们还在开发一些其他技巧。

举例来说,当用户在 Chrome 地址栏中以及 Android 上的搜索框等其他位置输入搜索查询时,Chrome 会为已启用预加载的用户推出预渲染的搜索结果页。其他搜索引擎也可以实现此功能,而不仅仅是 Google 搜索,不过我们目前尚未发现其他搜索引擎实现此功能。

Google 搜索并不打算进一步实现结果链接本身的预渲染,因为这不适用于跨网站导航(甚至必须选择启用同网站、跨源预渲染)。

有关浏览器支持的说明

Browser Support

  • Chrome: 109.
  • Edge: 109.
  • Firefox: not supported.
  • Safari: behind a flag.

Source

目前,基于 Chromium 的浏览器中已实现 Speculation Rules API,但 Chrome 正在通过 W3C 标准流程发布 API 规范,并希望其他浏览器也能实现此 API。

目前,私密预取代理仅在 Chrome 中实现,而不在其他基于 Chromium 的浏览器中实现,但如果其他浏览器实现自己的私密预取代理,Google 搜索也可能会在这些浏览器中实现这些改进。

由于在没有专用预提取代理的情况下进行预提取会带来隐私权方面的影响,因此 Google 搜索不会在不支持此技术的浏览器上进行预提取,并且尚未针对其他浏览器使用其他技术实现回退。不过,作为一种渐进式增强功能,这仅意味着使用这些浏览器的用户无法从这种小幅速度提升中受益。

在您的网站上试用一下吧!

Speculation Rules API 可供所有网站使用,而不仅仅是 Google 搜索。除了此处讨论的预提取功能之外,预渲染在可使用时还可提供更多好处。Google 搜索等大型网站已表明此 API 在提升用户体验方面具有明显优势,因此我们鼓励所有网站所有者了解如何使用此 API 并从中获益。

此外,本文中详述的隐私保护措施也适用于其他网站,但前提是用户必须在设置中启用“扩展预加载”支持,才能允许非 Google 网站使用 Google 的专用预提取代理来路由流量。这是因为这会在用户和网站之间引入 Google 作为额外的一方,而在 Google 网站上,这是不必要的,因为 Google 网站本身就是相关方之一。