Google AMP Cache 提供发布到网络的有效 AMP 内容的缓存副本。直接从 Google AMP Cache 中提供内容,以提供快速的用户体验。
若要利用 Google AMP Cache,必须使用 AMP Cache 网址格式直接从缓存中访问 AMP 网址。每次用户通过缓存访问 AMP 内容时,内容都会自动更新,而更新后的内容会在缓存内容后传送给下一位用户。
AMP 缓存网址格式
AMP 缓存网址格式由以下部分组成:
组件 | 说明 |
---|---|
子域名 | 在字符限制和技术规范允许的情况下,Google AMP Cache 创建的子网域将易于用户理解,并且与发布商自己的网域非常相似。Google AMP Cache 会尽可能通过以下方式创建各个子网域:
例如, |
内容类型 | 内容类型可以是以下任一类型:对于 AMP HTML 文档,显示为 'c';对于图片,为 &i39;i';对于字体等资源,为 &r33。 Google AMP Cache 会针对与这些内容类型不匹配的资源返回 404 错误(请参阅核心错误)。 |
可选(可选) | 如果存在此标记,则要求 Google 使用 TLS(安全 HTTPS)从源站提取内容。如果 's' 不存在,则使用纯 HTTP 从源站提取内容。 |
URI | 要提取的内容的 URI。URI 不能包含架构;也就是说,不得包含“http://”或“https://”。 |
查找子域名
通常情况下,Google AMP Cache 网址的子网域将按照上述步骤列出原始网址的用户可读懂转换内容。不过,由于这种情况可能不成立,因此对于生产就绪应用,检索 Google AMP Cache 网址的最佳方法是使用 Google AMP Cache 网址 API。
对于非生产环境,如需确定 Google AMP Cache 生成的子网域名称,请试用 amp.dev 上的使用 Google AMP Cache 交互式工具。
使用 TLS 请求文档的示例
请求从 https://example.com/amp_document.html
中提取的 AMP HTML 文档(使用 /c
前缀指定):
https://example-com.cdn.ampproject.org/c/s/example.com/amp_document.html
由于 /s
后跟 /c
前缀,因此系统将使用 TLS 从 example.com 中提取文档。
使用纯 HTTP 请求图片的示例
请求从 http://example.com/logo.png
提取的图片(使用 /i
前缀指定):
https://example-com.cdn.ampproject.org/i/example.com/logo.png
由于 /i
前缀后面没有 /s
,因此 Google 会使用普通 HTTP 而不是 HTTP over TLS 从 example.com 中提取图片。
查询参数示例
AMP 缓存网址格式还可以在查询字符串中包含参数。
下面是一个包含参数的 HTTPS 示例:
https://example-com.cdn.ampproject.org/c/s/example.com/g?value=Hello%20World
Google AMP Cache 更新
当用户从 Google AMP Cache 请求 AMP 文档时,缓存会自动请求更新,以便在内容缓存后为下一位用户提供新内容。借助此模型,AMP 文档更新会自动快速传播;少数用户在更新后会看到未更新的版本。
缓存遵循“stale-when-revalidate”模型。它使用源缓存的标头(例如 Max-Age
)作为决定特定文档或资源是否过时的提示。
当用户请求过时的内容时,该请求会导致系统提取新的副本,以便下一个用户获得新鲜内容。
为限制其为发布商网站生成的负载量,Google AMP Cache 会将所有文档视为至少 15 秒,并将任何资源至少视为 1 分钟。 请注意,这些数字将来可能会发生变化,因为我们会调整缓存,以在发布商网站的新鲜度和负载之间达到最佳平衡。
缓存优化和修改
Google AMP Cache 会执行各种优化和修改,例如:
- 验证内容是否确实采用 AMP 格式,从而符合所有 AMP 效果目标。
- 除了 AMP 文档之外,还会缓存图片和字体。
- 限制图片大小上限,以防止浏览器出现内存问题和响应速度慢。
- 通过
amp-img
标记提高图片传递效率的各种转换,例如:- 移除不可见或很难看到的数据,例如某些元数据。
- 将图片转换为更小、更适合移动设备的图片格式,例如在支持 WebP 的浏览器中将 GIF、PNG 和 JPEG 格式的图片转换为 WebP 格式。
- 如果请求包含 Save-Data 标头,则将图片转换为低画质。
- 生成备用大小的版本并添加
srcset
属性以支持分发自适应尺寸的图片。
- 通过安全的通道 (HTTPS) 提供,并使用最新的网络协议(SPDY、HTTP/2)。
- 清理 AMP 文档,防止因错误关闭的 HTML 标记、注释等因素而导致 XSS 攻击。
在进行上述转换时,Google AMP Cache 会忽略“Cache-Control: no-transform”标头。
HTML 清理
Google AMP Cache 会重写所有文档以对解析结果进行标准化。 例如:
- 去掉了所有 HTML 注释。
- 标记和属性名称采用小写形式。
- 属性值会始终采用英文引号进行转义。
- 除 HTML5 void 元素外,所有标记均已关闭。
- 标记内的空格会被剥离。
- 文本已转义。
- 使用 UTF-8 等效字符简化了编码文本字符。
- 只能位于
body
中的元素会移到body
中。 - 出站链接已设为绝对链接,这样一来,当文档是通过 Google AMP Cache 来源(而非发布商来源)提供时,出站链接仍然有效。
插入预取标记
Google AMP Cache 为浏览器添加了各种预提取提示标记,以帮助提前加载资源。例如,<link href='https://fonts.googleapis.com/css?family=Lato' rel='stylesheet’>
会更改为:
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet"> <link href="https://fonts.gstatic.com" rel="dns-prefetch preconnect">