AMP

Google 搜索中更好的 AMP 网址开发者预览

缓存

AMP 用户和发布商告诉我们,他们希望在显示其 AMP 网页的任何地方都使用原始域名。



今年早些时候,我们展示了一项技术,名为签名 HTTP 交换,该技术支持在任何 AMP 缓存上转换缓存的 AMP URL。Google Chrome 自此在 Chrome 71 中启动了签名交换的起源试验。今天,Google 搜索开放了这项技术的开发者预览版,任何发布者都可以亲自试用。

由 AMP 缓存使用的签名交换除了 URL 栏的可视体验之外,还为用户和发布者带来了好处。签名交换还

  • 使用加密签名提供保证,确保内容完全是发布者打算向用户展示的内容。
  • 允许浏览器将文档视为属于发布者的起源。这允许发布者使用第一方 cookie 来定制内容、执行服务工作者以及衡量分析数据。

签名交换是名为 Web Packaging 的更广泛的 Web 提议的一部分。Web Packaging 规范最初在 2015 年作为 W3C 草案提出,随着标准机构成员、其他浏览器供应商、安全专家以及发布者和 Web 开发者的反馈,它在不断发展。

尝试 Google 搜索演示的步骤

  1. 签名交换目前仅在 Chrome 版本 71 或更高版本中启用。在撰写本文时,这需要从 Chrome Beta 频道安装,但它很快将发布到所有 Chrome 频道。
  2. 如果您没有使用智能手机或平板电脑等移动设备,请在浏览器上启用移动模拟。AMP 页面仅显示在移动设备上。接下来,访问https://g.co/webpackagedemo
  3. 这将显示一个搜索框。在此处,输入查询,例如 [通过示例学习 AMP],然后点击 ampbyexample.com 主页的“通过示例学习 AMP”。到目前为止,只有少数发布者实施了此功能,因此您可能需要尝试此特定查询。如果您已正确完成这些步骤,您将在浏览器的 URL 栏中看到“https://ampbyexample.com”。

就是这样!AMP 缓存已预加载 AMP 文档,而 Chrome 已通过密码验证,确保 AMP 文档从未被修改为发布者预期之外的内容,从而使发布者的 URL 成为填充浏览器地址栏的内容。

底层

预取

在 Google 搜索返回 AMP 结果时,搜索结果页面会指示浏览器获取 AMP 文档,由设备在后台“预取”。

当用户单击该结果时,AMP 文档可以立即显示。这部分是因为单击的文档已获取并部分加载。

图像和视频等大量资源尚未全部预先获取,但 AMP JavaScript 库会确保为其保留文档空间,并优化其加载顺序。如果用户最终没有单击,这将节省带宽。它还可以保护用户的隐私。

一项重要的隐私原则是,在用户单击文档之前,第三方不应能够确定用户对该文档感兴趣。如果预加载导致浏览器向 Google 以外的服务器发出网络请求,那么用户查询的一些意图将泄露到用户甚至从未单击过的网站。

为实现此目的,在加载文档之前获取的文档或任何资源都不能从第三方获取。只有当用户通过轻触表示加载文档的意图后,才会获取这些资源。我们称此机制为“隐私保护预取”,它在用户选择要访问哪个文档之前,在用户和发布者之间提供了一个缓冲区。

为了在预取文档的同时保护隐私,引荐者(在本例中为 Google 搜索)必须从 Google 服务器(Google AMP 缓存)加载文档。

签名交换

我们希望在同时维护 AMP 文档的 URL 和源模型的情况下实现隐私保护预取。我们正在使用 W3C 和 IETF 等标准机构起草的一系列新浏览器技术来实现此目的,称为“签名交换”。

已签名交换是 HTTP 请求/响应对,使用发布者自己的证书私钥进行加密签名。换句话说,已签名交换向浏览器提供数字证明,表明 AMP 缓存提供的文档未经发布者修改。

当浏览器看到已签名交换并可以验证签名时,浏览器可以显示发布者的 URL,无论文件从何处提供。

AMP 打包器

为了帮助发布者构建已签名交换,AMP 团队构建了一个工具,发布者可以使用该工具来打包和提供已签名交换。该工具称为 AMP 打包器

AMP 打包器在发布者自己的基础设施上作为 Web 服务器后端运行。它充当代理,接受对 AMP Web 包的 HTTP 请求,将该请求转发到发布者自己的后端,然后将其转换为已签名交换。

除了打包文档外,AMP 打包器还会对文档应用转换,这些转换 优化 页面以便在 AMP 缓存上提供。这些转换会修改文档本身,而不会改变其对用户的外观。但是,发布者应该能够检查执行这些转换的代码,因此 AMP 打包器代码(包括应用的转换)是开源的。

开发者预览

希望选择加入此开发者预览的开发者首先应意识到规范仍在变化,而这是一个快照的实现。

部署后,留出几天时间让 Google 搜索爬虫重新访问您的网站,之后您应该能够按照上述 Google 搜索演示说明来尝试体验。

选项 A:运行 AMP 打包器工具

AMP 项目提供了 AMP 打包器,这是一个开源工具,其中提供了如何在您自己的基础设施上运行它的详细说明。

在这些步骤中,您需要使用 CanSignHttpExchanges 扩展 从您的证书颁发机构生成一个新证书。在撰写本文时,唯一构建了已签名交换证书请求流程的证书颁发机构是 DigiCert,其详细说明可以在 Digicert CanSignHTTPExchanges 中找到。

选项 B:使用支持已签名交换的 CDN

如果您使用 CDN 提供商,请询问他们是否可以提供 AMP 已签名交换。

在撰写本文时,Cloudflare 已宣布一项 Cloudflare Worker 应用程序实验性实现,作为向其客户提供的一项服务。请参阅 这篇 Cloudflare 博客文章,了解有关 Web 打包的更多信息 ,了解如何在 Cloudflare 上启用 Signed Exchanges。部署后,请留出几天时间让 Google Search 爬虫重新访问您的网站,之后您应该可以使用上述 Google Search Demo 说明来尝试体验。

我们很乐意听取您的意见

我们很乐意听取您对 AMP 中 Signed Exchanges 的反馈。您可以加入 规范讨论,报告 一个 Chrome Bug,报告一个 AMP Packager Bug,或 提供一般 AMP 反馈。您的反馈将极大地帮助我们塑造 AMP 和网络的未来。

发布者:Google AMP 软件工程师 Greg Grothaus