AMP

Google AMP 缓存、针对慢速网络的优化以及对速度的需求

未分类

以下内容由 Google 软件工程师 Huibao Lin 和 Eyal Peled 发布在 Google 开发者博客上。

编辑注:此博文已修改,删除了“AMP 精简版”一词。这是针对慢速网络改进 AMP 的一个项目的代号,但许多读者将其解释为 AMP 的一个独立版本。对于由此造成的困惑,我们深表歉意。

在 Google,我们相信以速度为核心原则来设计产品。加速移动页面 (AMP) 格式有助于确保内容可靠地快速加载,但我们还可以做得更好。

智能缓存是用户在 Google 搜索和 Google 新闻与天气等产品中获得的近乎即时 AMP 体验的关键因素之一。通过缓存,我们可以使内容通常更接近请求它的用户,以便字节通过线路传输到用户时行程更短。此外,使用缓存等单一通用基础设施可以更一致地提供页面服务时间,尽管内容来自许多主机,与缓存相比,这些主机提供内容时的延迟可能非常不同且更大。

提供更快速、更一致的内容是 Google 搜索的 AMP 体验中所提供页面来自 Google AMP 缓存 的主要原因。缓存的统一内容服务基础设施开辟了构建优化功能的激动人心的可能性,这些优化功能可以扩展以改善对数亿份已提供文档的体验。让任何文档都能利用这些优势是 Google AMP 缓存可免费供任何人使用的主要原因之一。

在本文中,我们将重点介绍我们最近引入的两项改进:(1) 优化图像传输,以及 (2) 使内容能够在带宽受限条件下更成功地提供。

Google AMP 缓存的图像优化

在整个网络上,平均而言,图像占页面字节的 64% 。这意味着图像是一个非常有希望的、可以进行有效优化的目标。

应用图像优化是减少网络字节的有效方法。Google AMP 缓存采用 PageSpeed 模块Chrome 数据压缩 使用的图像优化堆栈。(请注意,为了执行上述转换,Google AMP 缓存会忽略“Cache-Control: no-transform”标头。)网站可以通过在其服务器上安装 PageSpeed 来在其源服务器上获得相同的图像优化。

以下是我们进行的一些优化的摘要

1) 删除不可见或难以看到的数据

我们删除对用户不可见图像数据,例如缩略图和地理位置元数据。对于 JPEG 图像,如果质量和颜色样本高于必要值,我们也会降低它们。确切地说,我们将 JPEG 质量降低到 85,颜色样本降低到 4:2:0 — 即每四个像素一个颜色样本。将 JPEG 压缩到高于此质量或更多颜色样本需要更多字节,但视觉差异难以察觉。

然后对减少的图像数据进行彻底压缩。我们发现,这些优化将字节减少了 40% 以上,同时不会引起用户注意。

2) 将图像转换为 WebP 格式



某些图像格式更适合移动设备。对于受支持的浏览器,我们将 JPEG 转换为 WebP。此转换可将字节额外减少 25% 以上,且不损失质量。

3) 添加 srcset

如果未包含“srcset”,我们将添加它。这适用于具有“src”但没有“srcset”属性的“amp-img”标签。该操作包括扩展“amp-img”标签以及将图像调整为多个尺寸。这进一步减少了小屏幕设备上的字节数。

4) 在某些情况下使用较低质量的图像

当有迹象表明用户需要此操作或网络条件非常慢时(如下所述),我们会降低 JPEG 图像的质量。例如,对于已启用 数据保护程序 的 Chrome 用户,我们将 JPEG 图像质量降低到 50。此转换可将 JPEG 图像的字节进一步减少 40% 以上。

以下示例显示了优化 之前(左/上)和 之后(右/下)的图像。最初图像有 241,260 个字节,在应用优化 1、2 和 4 之后变为 25,760 个字节。优化后图像看起来基本相同,但已节省了 89% 的字节。

针对网络条件较慢的 AMP

世界各地有许多人使用速度较慢的连接或设备访问互联网,且 RAM 较低,我们发现某些 AMP 页面并未针对这些受到严重带宽限制的用户进行优化。出于此原因,Google 也已开始努力为这些用户从 AMP 页面中删除更多字节。

通过此项举措,我们将上述所有优化应用于图片。具体而言,我们始终使用较低质量级别(见上文第 4 条)。

此外,我们通过使用 amp-font 标签优化外部字体,将字体加载超时设置为 0 秒,以便无论外部字体以前是否缓存,页面都可以立即显示。

我们将在越南和马来西亚等多个国家/地区以及全球低内存设备持有者中推出这些优化。请注意,这些优化可能会修改某些图片的精细细节,但不会影响页面的其他部分,包括广告。

* * *

总而言之,我们看到上述所有优化措施将字节数减少了 45%。

我们希望进一步提高对用户数据的高效利用,以提供更快的 AMP 体验。