Google 搜索如何使用推测规则

发布时间:2025 年 2 月 12 日

Google 搜索是网络上最热门的网站之一,也是速度最快的网站之一。搜索团队一直在投资于提升搜索体验的速度。在像 Google 搜索这样热门的网页上,即使缩短几毫秒的时间,也会带来巨大的累积效益!对速度的关注包括知名的 Google 首页、搜索引擎结果页 (SERP),以及来自这些搜索结果的其他网站点击。

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

预提取前两个结果

推测规则的早期用途之一是预加载前两个搜索结果。例如,搜索“test”会在页面中包含以下推测规则:

{
    "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 文档,因此用户会提前获得优势。

您可以在“DevTools”>“推测”标签页中查看规则和预提取尝试情况(如前所述):

开发者工具“推测”面板,其中列出了“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 引荐来源政策。

如果用户有该网站的 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 首次发布以来,该 API 已通过添加 eagerness 属性得到增强,这样一来,系统只会在用户将鼠标悬停在链接上或开始点击链接时进行推测。

Google 搜索决定不仅预加载前两条搜索结果,还预加载其余搜索结果,但仅在用户将鼠标悬停在链接上时(使用 moderate 热切换设置)才会执行此操作。这样可以防止为不太可能被点击的链接不必要地浪费资源。

同样,当您在 Chrome 中进行搜索时,可以在开发者工具中看到该规则,它与上一个规则完全相同,但这次设置了 "eagerness": "moderate" 选项:

显示使用 anonymouse-client-ip-when-cross-origin、strict-origin 引荐来源政策、中等急切程度和七个网址的列表规则的“DevTools 规则”面板
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: not supported.

Source

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

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

由于在没有私密预提取代理的情况下进行预提取会影响隐私,因此 Google 搜索不会在不支持此技术的浏览器上进行预提取,因此也没有针对其他浏览器使用其他技术实现回退。不过,由于这项增强功能是渐进式增强功能,这只是意味着使用这些浏览器的用户无法受益于这小小的速度提升。

在您的网站上试用一下!

Speculation Rules API 适用于所有网站,而不仅仅是 Google 搜索。除了本文中讨论的预提取功能之外,预渲染在适当的时间和地点使用时还能带来更多好处。像 Google 搜索这样的大型网站已经证明了此 API 对用户体验的明显益处,因此我们鼓励所有网站所有者了解如何使用此 API 并从中获益。

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