开始在 Google 搜索中使用 Signed Exchange

Signed Exchange (SXG) 让 Google 搜索能够预提取您的内容,同时又不损及用户隐私。在实践中,这意味着如果相关网站支持 SXG,则 Google 搜索中显示的 AMP 和非 AMP 结果可能会以注重隐私保护的方式预提取一些关键资源(例如 HTML、JavaScript、CSS、图片或字体)。

当用户最终点击结果时,由于已有可用的关键资源,网页会更快地开始渲染,从而提供更出色的用户体验。因此,内容的 Largest Contentful Paint (LCP) 得分可能会降低,进而从整体上改善网页体验

实现 SXG

如需实现 SXG,请遵循 web.dev 上的详细指南。实现此机制后,请按照前述指南衡量和优化 SXG 带来的性能改进

对于 AMP 网页,请遵循 amp.dev 上的详细指南

Google 使用 SXG 缓存来预提取内容。Google 可能会多次提供这些缓存的 SXG。

为了确保在 Google 搜索中显示最新内容,请适当设置 SXG 的失效日期。一般来说,应确保失效日期早于以下两个日期:

  • 由 HTTP 标头确定的缓存失效日期
  • 如果内容是 JavaScript 或内联 JavaScript,则为 1 天后;否则为 7 天后

为了确保内容在多种设备上提供时能正确显示,请执行以下操作:

  1. 将个性化内容(如购物车)迁移到 SXG 外部的延迟加载元素中。或者,也可以添加带有 Vary: Cookie 签名的标头;带有此标头的 SXG 将只向您网站的没有 Cookie 的访问者显示。
  2. 采用自适应设计构建网页。或者,使用单独的网址提供桌面版和移动版网页,或使用 supported-media meta 标记为网页添加注释,声明网页不是自适应网页。 例如,在网页的 <head> 元素中添加以下标记:
    <meta name=supported-media content="only screen and (max-width: 640px)">

监控和调试 SXG

如需了解有哪些工具可用于调试 SXG,请参阅 web.dev 上的 SXG 工具指南

如果 Googlebot 无法解析 SXG,则可能会重新抓取 Accept 标头中不带 application/signed-exchange;v=b3 的网址,以检索 text/html 变体。如果出现任何 SXG 索引编制错误,Google 搜索都会链接到未实施 SXG 的原始网址。

对于 AMP 网页,请使用 Search Console 中的“AMP 状态”报告监控 SXG 错误

调试 Google SXG 缓存

如需确定 SXG 是否符合缓存要求,请使用 SXG Validator Chrome 扩展程序

或者,请直接查询 Google SXG 缓存。 例如,如果 SXG 网址为 https://signed-exchange-testing.dev/sxgs/valid.html,则相应的缓存网址格式如下:

https://signed--exchange--testing-dev.webpkgcache.com/doc/-/s/signed-exchange-testing.dev/sxgs/valid.html

用于计算子网域和网址路径后缀的算法与 AMP Cache 相同,但中缀字符串 /doc/-/ 有所不同。

如果响应为 SXG,这意味着来自源服务器的响应符合 Google SXG 缓存要求。否则,响应中将包含指明原因的 HTTP 标头。

  • 如果存在 Warning 标头,则表示出现了错误,导致 SXG 不符合缓存要求。
  • 如果存在 Location 标头,则表示相应资源尚未被缓存系统提取。这不是 SXG 中存在的错误。

无论给出了怎样的响应,缓存系统都会在队列中加入一个对原始网址的请求,以获取一份最新副本。多种因素都会影响系统何时以及是否发出此请求,包括 Googlebot 抓取您网站的速度有多快。

Google 缓存 SXG 的时间不会超出 SXG 签名的 expires 值或 SXG 响应的未签名标头的新鲜度生命周期

对于 AMP 网页,可以使用网址检查工具调试缓存错误。

随时掌握最新信息

订阅 webpackaging-announce 邮寄名单,随时掌握关于以下变更的最新消息:

  • Google SXG 缓存系统的变更,包括增添新功能或弃用现有功能的变更。
  • SXG 工具 Web Packager、NGINX SXG 模块和 libsxg 的重大变更。

如果您对在 Google 搜索中使用 SXG 有任何疑问,请访问搜索中心帮助社区