AMP

幕后:部署 AMP 运行时

开发者体验

使用 AMP 的主要优势之一是其常青发布。如今,Web 开发人员和工程团队可以每周获得 AMP 的最佳功能,而无需承担依赖管理的负担。 

在过去几个月里,基础设施工作组 一直在努力改进 AMP 发布其运行时和组件的方式。这些改进基于以下反馈

  • 一些开发团队更喜欢较慢的发布节奏,这样他们就不必每周为其网站运行质量保证 (QA)。
  • AMP 版本的现有文档有时可能不完整或令人困惑。
  • 能够在潜在的破坏性更改到达大多数最终用户之前检测到它们至关重要。
  • 一些合作伙伴希望能够在开发期间自行托管 AMP 运行时和组件,而不是必须从 cdn.ampproject.org 获取它们。

这篇博文的目的是帮助读者了解 AMP 如今的工作方式,并了解即将推出的改进(例如更新的发布渠道名称、LTS 和 Nightly 渠道以及在源 URL 上自行托管 AMP 的能力)。

了解 AMP 版本

每周都会发布一个新版本的 AMP 运行时。为了让人们相信发布者的网站将保持相同的外观和行为,版本通过多个渠道提供。主要的发布渠道称为 **稳定版**、**测试版** 和 **实验版**。它们服务于不同的目的,并且由不同的人群规模看到。此外,我们还引入了两个名为 **LTS** 和 **Nightly** 的渠道,以进一步帮助测试和维护。以下是每个渠道的简要说明。  

稳定版渠道

这是 AMP 运行时的主要生产就绪发布渠道,并且被绝大多数 AMP 文档使用。当更改提交到 AMP 代码库时,它会通过其他渠道进行多层测试和验证,然后才能成为稳定版渠道的一部分。

测试版渠道

测试版渠道是即将发布的稳定版渠道版本的准确体现。开发人员和 QA 团队可以选择加入测试版渠道,以验证其网站是否与 AMP 运行时的最新更改兼容。这可以通过在浏览器中打开 AMP 实验页面 并激活“AMP 测试版渠道”来完成。

**注意:** 选择加入测试版渠道只会影响您浏览器中使用的 AMP JS 库的版本。无法强制访问您网站的访客接收 AMP 的测试版渠道版本。

测试版渠道可能不如稳定版渠道可靠,并且可能包含尚未向所有用户提供的功能。它适用于

  • 尝试将在下周发布的新 AMP 功能。
  • 执行 QA 以验证网站是否与 AMP 的下一个版本兼容。

实验版渠道

一些新的 AMP 功能可能需要几周时间才能开发和测试。因此,它们隐藏在实验性标志后面,这些标志在测试版和稳定版渠道中被关闭。实验版渠道为开发人员和 QA 团队提供了一种尝试和测试新功能的方法。这可以通过在浏览器中打开 AMP 实验页面 并激活“AMP 实验版渠道”来完成。

**注意:** 选择加入实验版渠道只会影响您浏览器中使用的 AMP JS 库的版本。无法强制访问您网站的访客接收 AMP 的实验版渠道版本。

实验版渠道和测试版渠道之间的区别在于,某些正在开发的功能可能在实验版渠道中可用,但在测试版渠道中被关闭。如果一项功能被认为已准备好使用,则其标志将被打开,使其在测试版渠道中可见,最终在稳定版渠道中可见。根据功能的不同,这可能需要几天、几周甚至几个月的时间。

长期稳定版 (LTS) 渠道

开发团队的一个反复出现的请求是,希望有一个 AMP 发布渠道,其版本之间的间隔更长,以便允许比当前的每周周期更长的 QA 周期。

新创建的 长期稳定版 (LTS) 发布渠道 解决这个问题。大约每月,最近的稳定版渠道版本会被提升到 LTS 渠道。

需要注意的是,LTS 渠道不推荐所有 AMP 发布者使用。它适用于那些希望不太频繁地测试其网站,并且可以接受在使用新功能之前等待几周的人。发布者可以选择将其网站上的特定页面使用 LTS 渠道。使用 LTS 渠道的网页将获得与稳定版渠道相同的缓存优势。

与个人可以通过设置浏览器 cookie 选择加入的测试版和实验版渠道不同,当发布者选择将其页面使用 LTS 渠道时,LTS 渠道会提供给该网页的所有用户。
每个月的第二个星期一,都会通过提升上周的稳定版渠道版本来提供一个新的 LTS 版本。LTS 渠道的时间表可以在 此处 找到。

将 LTS 渠道用于网页:

以下是一个使用稳定版渠道的网页示例

<script async src="https://cdn.ampproject.org/v0.js"></script>
<script
  async
  custom-element="amp-ad"
  src="https://cdn.ampproject.org/v0/amp-ad-0.1.js"
></script>

要改为使用 LTS 渠道,只需更改运行时和扩展脚本的“src”属性,方法是在 URL 中添加“lts/”

<script async src="https://cdn.ampproject.org/lts/v0.js"></script>
<script
  async
  custom-element="amp-ad"
  src="https://cdn.ampproject.org/lts/v0/amp-ad-0.1.js"
></script>

**注意:** 您应该确保您使用的 AMP 运行时和扩展脚本位于同一渠道,以确保您的 AMP 文档有效。例如,使用 LTS 渠道的 v0.js 和稳定版渠道的 amp-carousel-0.1.js 将导致验证错误。

Nightly 渠道

为了提高对即将发布的 AMP 版本质量的信心,我们很快将自动生成 AMP 运行时的夜间构建,并通过新的 Nightly 渠道提供它们。该渠道将有助于降低错误率,提高运行时性能,并确保整体代码质量。Nightly 渠道中的代码最终将进入测试版/实验版、稳定版和 LTS 渠道。一旦引入,开发人员将能够以与他们选择加入实验版或测试版相同的方式选择加入 Nightly 渠道,如上所述。

**注意:** 我们不鼓励开发人员选择加入 Nightly 渠道,除非他们希望每天测试更改,因为它不如测试版、实验版和稳定版渠道稳定。

发布计划

上一节介绍了所有现有和即将推出的发布渠道。现在让我们跟踪一段代码从通过拉取请求提交到开源存储库到它通过各种发布渠道的旅程。

假设一段代码在给定月份 (N) 的第 8 天合并到开源存储库中。由于这恰好是工作日,因此接下来的夜间构建(第 9 天)将包含该代码。经过几天的测试,在下周的星期二(第 16 天),用户可以通过选择加入测试版或实验版渠道来查看该代码。假设没有发现问题,该代码将在接下来的星期二(第 23 天)进入稳定版渠道。最后,在下个月 (N+1) 的第二个星期一(第 N+1 个月的第 16 天),相同的稳定版渠道版本将成为新的 LTS 渠道版本。

您可以在项目的 发布计划 页面上详细了解 AMP 的发布渠道和时间表。您还可以 可视化 新代码合并到 amphtml GitHub 存储库中并随着时间的推移而发展以到达发布者、开发人员和最终用户的过程。

一种自行托管 AMP 运行时的新方法

我们目前正在努力使网站所有者能够自行托管 AMP 运行时,而不会破坏 AMP 有效性。好处是

  • **独立性:** AMP 运行时和组件不再需要从 https://cdn.ampproject.org 加载,用于从源 URL 提供服务的 AMP 页面。
  • **控制:** 网站可以将其新 AMP 版本的推出与自己的 QA 保持一致。他们还可以根据需要回滚到 AMP 运行时的不同版本。
  • **性能:** 通过避免额外的 HTTPS 连接,实现更快的页面加载和 TTI。

目标是允许发布者链接到自行托管的 AMP 运行时版本,而不会破坏 AMP 有效性。这意味着以下将是有效的 AMP

<!DOCTYPE html><html amp transformed="self;v=1">
<head>
  <script async src="https://example.com/amp/v0.js"></script>
  <script
   async custom-element="amp-bind"
   src="https://example.com/amp/v0/amp-bind-0.1.js"
  ></script>  
   ...

**注意:** 为了 保护用户隐私,AMP 缓存不支持运行时自行托管,而是会将链接重写为缓存托管的脚本。 

计划在今年晚些时候推出 AMP 运行时自行托管,您可以通过 实施意向设计文档 跟踪实施情况。 

* * *

随着所有这些更改,我们希望 AMP 版本更容易理解、采用、测试和部署。感谢您,AMP 开发社区,感谢您的工作和反馈。与往常一样,如果您有任何问题或功能请求,请告知我们

作者:Naina Raisinghani 和 Raghu Simha,AMP 项目