Amazon CloudFront
开发人员指南 (API 版本 2016-09-29)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

自定义源的请求和响应行为

CloudFront 如何处理请求以及将请求转发到自定义源服务器

本主题包含有关 CloudFront 如何处理查看器请求以及如何将请求转发到自定义源的信息。

身份验证

对于 DELETEGETHEADPATCHPOSTPUT 请求,如果配置 CloudFront 以将 Authorization 标头转发到源,您可以将源服务器配置为请求客户端身份验证。

对于 OPTIONS 请求,您可以将源服务器配置为仅在使用以下 CloudFront 设置时请求客户端身份验证:

  • 配置 CloudFront 以将 Authorization 标头转发到源

  • 配置 CloudFront 以 缓存 OPTIONS 请求的响应

您可以配置 CloudFront 以使用 HTTP 或 HTTPS 将请求转发到源;有关更多信息,请参阅将 HTTPS 与 CloudFront 一起使用

缓存持续时间和最小 TTL

对于 Web 分配,要控制对象在 CloudFront 缓存中保留多长时间后 CloudFront 将另一请求转发到源,您可以:

  • 配置源,以添加 Cache-ControlExpires 标头字段到每个对象。

  • 在 CloudFront 缓存行为中指定最小 TTL 的值。

  • 使用默认值 24 小时。

有关更多信息,请参阅管理内容保留在边缘缓存中的时间长度(过期)

客户端 IP 地址

如果查看器将请求发送到 CloudFront 并且不包含 X-Forwarded-For 请求标头,CloudFront 将通过 TCP 连接获取查看器的 IP 地址,添加包含该 IP 地址的 X-Forwarded-For 标头,并将请求转发到源。例如,如果 CloudFront 通过 TCP 连接获取 IP 地址 192.0.2.2,则它将以下标头转发到源:

X-Forwarded-For: 192.0.2.2

如果查看器将请求发送到 CloudFront 并且包含 X-Forwarded-For 请求标头,CloudFront 将通过 TCP 连接获取查看器的 IP 地址,将该 IP 地址附加到 X-Forwarded-For 标头的末尾,并将请求转发到源。例如,如果查看器请求包含 X-Forwarded-For: 192.0.2.4,192.0.2.3,并且 CloudFront 通过 TCP 连接获取 IP 地址 192.0.2.2,则它将以下标头转发到源:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

一些应用程序(例如,负载均衡器(包括 Elastic Load Balancing)、Web 应用程序防火墙、反向代理、入侵防御系统以及 API 网关)将转发请求的 CloudFront 边缘服务器的 IP 地址附加到 X-Forwarded-For 标头末尾。例如,如果 CloudFront 在它转发到 ELB 的请求中包含 X-Forwarded-For: 192.0.2.2,并且 CloudFront 边缘服务器的 IP 地址为 192.0.2.199,则 EC2 实例收到的请求包含以下标头:

X-Forwarded-For: 192.0.2.2,192.0.2.199

注意

X-Forwarded-For 标头包含 IPv4 地址(例如 192.0.2.44)和 IPv6 地址(例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334)。

客户端 SSL 身份验证

CloudFront 不支持使用客户端 SSL 证书进行客户端身份验证。如果源要求客户端证书,则 CloudFront 将删除请求。

压缩

CloudFront 转发具有 Accept-Encoding 字段值 "identity""gzip" 的请求。有关更多信息,请参阅提供压缩文件

有条件请求

在 CloudFront 从边缘缓存中收到已过期的对象的请求时,它将请求转发到源以获取对象的最新版本,或者从源中获得 CloudFront 边缘缓存已具有最新版本的确认。通常,在源最后将对象发送到 CloudFront 时,它在响应中包括 ETag 值和/或 LastModified 值。在 CloudFront 转发到源的新请求中,CloudFront 添加以下一项或两项内容:

  • If-MatchIf-None-Match 标头,其包括对象过期版本的ETag值。

  • If-Modified-Since 标头,其包含对象过期版本的LastModified值。

源使用该信息来确定对象是否已更新,以及是否将整个对象返回到 CloudFront 或只返回 HTTP 304 状态代码 (Not Modified)。

Cookies

您可配置 CloudFront 以将 Cookie 转发到源。有关更多信息,请参阅根据 Cookie 缓存内容

跨源资源共享 (CORS)

如果您希望 CloudFront 采用跨源资源共享设置,请配置 CloudFront 以将 Origin 标头转发到源。有关更多信息,请参阅根据请求标头缓存内容

加密

您可以要求查看器使用 HTTPS 将请求发送到 CloudFront,并要求 CloudFront 使用查看器所使用的协议将请求转发到自定义源。有关更多信息,请参阅以下分配设置:

CloudFront 使用 SSLv3、TLSv1.0、TLSv1.1 和 TLSv1.2 协议将 HTTPS 请求转发到源服务器。对于自定义源,您可以选择您希望 CloudFront 在与源通信时使用的 SSL 协议:

  • 如果您使用 CloudFront 控制台,请使用源 SSL 协议复选框选择协议。有关更多信息,请参阅创建分配

  • 如果您使用 CloudFront API,请使用 OriginSslProtocols 元素指定协议。有关更多信息,请参阅 Amazon CloudFront API Reference 中的 OriginSslProtocolsDistributionConfig

如果源是 Amazon S3 存储桶,则 CloudFront 始终使用 TLSv1.2。

重要

不支持其他版本的 SSL 和 TLS。

有关将 HTTPS 与 CloudFront 一起使用的更多信息,请参阅将 HTTPS 与 CloudFront 一起使用。有关 CloudFront 支持用于查看器和 CloudFront 之间以及 CloudFront 和源之间的 HTTPS 通信的密码列表,请参阅适用于查看器和 CloudFront 之间通信且支持的 SSL/TLS 协议和密码

包含正文的 GET 请求

如果查看器 GET 请求包含正文,则 CloudFront 将 HTTP 状态代码 403 (Forbidden) 返回到查看器。

HTTP 方法

如果您将 CloudFront 配置为处理其支持的所有 HTTP 方法,则 CloudFront 会接受来自查看器的以下请求,并将这些请求转发到自定义源:

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

CloudFront 始终缓存 GETHEAD 请求的响应。您还可以将 CloudFront 配置为缓存 OPTIONS 请求的响应。CloudFront 不缓存使用其他方法的请求的响应。

有关如何配置是否让自定义源处理这些方法的信息,请参阅该源的文档。

重要

如果将 CloudFront 配置为接受 CloudFront 支持的所有 HTTP 方法并将这些方法转发到源,请配置源服务器以处理所有方法。例如,如果由于要使用 POST 而将 CloudFront 配置为接受并转发这些方法,您必须配置源服务器以相应地处理 DELETE 请求,以便查看器无法删除您不希望它们删除的资源。有关更多信息,请参阅您的 HTTP 服务器的文档。

HTTP 请求标头和 CloudFront 行为 (自定义源和 S3 源)

下表列出了 HTTP 请求标头,您可以将其转发到自定义源和 Amazon S3 源 (有例外情况需要注意)。对于每个标头,该表包含有关以下内容的信息:

  • 未配置 CloudFront 以将标头转发到源(这会导致 CloudFront 根据标头值缓存您的对象)时的 CloudFront 行为。

  • 您是否能将 CloudFront 配置为根据标头的标头值缓存对象。

    您可以将 CloudFront 配置为根据 DateUser-Agent 标头中的值缓存对象,但我们建议您不要这样做。这些标头具有大量可能的值,并且基于其值的缓存操作会导致 CloudFront 将更多请求转发到源。

有关基于标头值的缓存操作的更多信息,请参阅根据请求标头缓存内容

标头 在您未将 CloudFront 配置为根据标头值进行缓存时的行为 支持基于标头值的缓存操作

其他定义的标头

CloudFront 将标头转发到源。

Accept

CloudFront 删除标头。

Accept-Charset

CloudFront 删除标头。

Accept-Encoding

如果值包含 gzip,则 CloudFront 将 Accept-Encoding: gzip 转发到源。

如果值不包含 gzip,在将请求转发到源之前,CloudFront 删除 Accept-Encoding 标头字段。

Accept-Language

CloudFront 删除标头。

Authorization

  • GETHEAD 请求 – 在将请求转发到源之前,CloudFront 删除 Authorization 标头字段。

  • OPTIONS 请求 – 如果将 CloudFront 配置为缓存 OPTIONS 请求的响应,在将请求转发到源之前,CloudFront 删除 Authorization 标头字段。

    如果未将 CloudFront 配置为缓存 OPTIONS 请求的响应,则 CloudFront 将 Authorization 标头字段转发到源。

  • DELETEPATCHPOSTPUT 请求 – 在将请求转发到源之前,CloudFront 不会删除标头字段。

Cache-Control

CloudFront 将标头转发到源。

CloudFront-Forwarded-Proto

在将请求转发到源之前,CloudFront 不会添加标头。

有关更多信息,请参阅 基于请求的协议配置缓存

CloudFront-Is-Desktop-Viewer

在将请求转发到源之前,CloudFront 不会添加标头。

有关更多信息,请参阅 基于设备类型配置缓存

CloudFront-Is-Mobile-Viewer

在将请求转发到源之前,CloudFront 不会添加标头。

有关更多信息,请参阅 基于设备类型配置缓存

CloudFront-Is-Tablet-Viewer

在将请求转发到源之前,CloudFront 不会添加标头。

有关更多信息,请参阅 基于设备类型配置缓存

CloudFront-Viewer-Country

在将请求转发到源之前,CloudFront 不会添加标头。

Connection

在将请求转发到源之前,CloudFront 将该标头替换为 Connection: Keep-Alive

Content-Length

CloudFront 将标头转发到源。

Content-MD5

CloudFront 将标头转发到源。

Content-Type

CloudFront 将标头转发到源。

Cookie

如果将 CloudFront 配置为转发 Cookie,则它将 Cookie 标头字段转发到源。如果不进行此配置,则 CloudFront 删除 Cookie 标头字段。有关更多信息,请参阅根据 Cookie 缓存内容

Date

CloudFront 将标头转发到源。

是,但建议不要这样做

Expect

CloudFront 删除标头。

From

CloudFront 将标头转发到源。

Host

CloudFront 将值设置为与请求的对象关联的源的域名。

您无法基于 Amazon S3 或 MediaStore 源的主机标头进行缓存。

是 (自定义)

否(S3 和 MediaStore)

If-Match

CloudFront 将标头转发到源。

If-Modified-Since

CloudFront 将标头转发到源。

If-None-Match

CloudFront 将标头转发到源。

If-Range

CloudFront 将标头转发到源。

If-Unmodified-Since

CloudFront 将标头转发到源。

Max-Forwards

CloudFront 将标头转发到源。

Origin

CloudFront 将标头转发到源。

Pragma

CloudFront 将标头转发到源。

Proxy-Authenticate

CloudFront 删除标头。

Proxy-Authorization

CloudFront 删除标头。

Proxy-Connection

CloudFront 删除标头。

Range

CloudFront 将标头转发到源。有关更多信息,请参阅 CloudFront 如何处理对象的部分请求(Range GET)

是 (默认值)

Referer

CloudFront 删除标头。

Request-Range

CloudFront 将标头转发到源。

TE

CloudFront 删除标头。

Trailer

CloudFront 删除标头。

Transfer-Encoding

CloudFront 将标头转发到源。

Upgrade

CloudFront 会删除标头,除非您建立了 WebSocket 连接。

否(WebSocket 连接除外)

User-Agent

CloudFront 将该标头字段的值替换为 Amazon CloudFront。如果您希望 CloudFront 根据用户使用的设备缓存您的内容,请参阅基于设备类型配置缓存

是,但建议不要这样做

Via

CloudFront 将标头转发到源。

Warning

CloudFront 将标头转发到源。

X-Amz-Cf-Id

在将请求转发到源之前,CloudFront 将标头添加到查看器请求。标头值包含一个用于唯一标识请求的加密的字符串。

X-Edge-*

CloudFront 删除所有 X-Edge-* 标头。

X-Forwarded-For

CloudFront 将标头转发到源。有关更多信息,请参阅客户端 IP 地址

X-Forwarded-Proto

CloudFront 删除标头。

X-Real-IP

CloudFront 删除标头。

HTTP 版本

CloudFront 使用 HTTP/1.1 将请求转发到自定义源。

请求的最大长度与 URL 的最大长度

请求的最大长度,包括路径、查询字符串(如果有)以及标头,是 20480 个字节。

CloudFront 根据请求来构造 URL。此 URL 的最大长度是 8192 个字节。

如果请求或 URL 超出这些限制,则 CloudFront 将 HTTP 状态代码 413 (请求标头字段过大) 返回到查看器,然后终止与查看器的 TCP 连接。

OCSP Stapling

当查看器提交对象的 HTTPS 请求时,CloudFront 或查看器必须与证书颁发机构 (CA) 确认尚未吊销域的 SSL 证书。OCSP Stapling 允许 CloudFront 验证证书并缓存来自 CA 的响应,这将使客户端无需直接向 CA 验证证书,从而加快证书验证速度。

当 CloudFront 收到同一域中的对象的大量 HTTPS 请求时,OCSP Stapling 的性能改进会更明显。CloudFront 边缘站点中的每个服务器必须提交一个单独的验证请求。在 CloudFront 收到同一域的大量 HTTPS 请求时,边缘站点中的每个服务器很快将收到来自 CA 的响应,指出它可以在 SSL 握手中“固定”到一个数据包;在查看器认为证书有效时,CloudFront 可以提供请求的对象。如果您的分配未在 CloudFront 边缘站点中产生大量流量,则新请求更有可能定向到尚未向 CA 验证证书的服务器。在这种情况下,查看器将单独执行验证步骤,并且 CloudFront 服务器将提供对象。该 CloudFront 服务器还会向 CA 提交验证请求,因此,在它下次收到包含同一域名的请求时,便已获得来自 CA 的验证响应。

持久性连接

当 CloudFront 收到来自源的响应时,它会尝试将连接保持几秒钟,以防在此时段内有另一个请求到达。保持持久性连接可节省重新建立 TCP 连接以及针对后续请求再次进行 TLS 握手所需的时间。

有关更多信息 (包括如何配置持久性连接),请参阅来源保持连接超时一节中的您创建或更新分配时指定的值

协议

CloudFront 基于以下将 HTTP 或 HTTPS 请求转发到源服务器:

  • 查看器发送到 CloudFront 的请求的协议(HTTP 或 HTTPS)。

  • CloudFront 控制台中的源协议策略值或 DistributionConfig 复杂类型中的 OriginProtocolPolicy 元素(如果使用 CloudFront API)。在 CloudFront 控制台中,选项包括仅 HTTP仅 HTTPS匹配查看器

如果您指定仅 HTTP仅 HTTPS,则 CloudFront 仅使用指定的协议将请求转发到源服务器,而不考虑查看器请求中的协议。

如果您指定 Match Viewer (匹配查看器),则 CloudFront 将使用查看器请求中的协议将请求转发到源服务器。请注意,CloudFront 仅缓存对象一次,即使查看器使用 HTTP 和 HTTPS 协议发出请求。

重要

如果 CloudFront 使用 HTTPS 协议将请求转发到源,并且源服务器返回无效的证书或自签名证书,CloudFront 将中断 TCP 连接。

有关如何使用 CloudFront 控制台更新分配的信息,请参阅更新分配。有关如何使用 CloudFront API 更新分配的信息,请转到 Amazon CloudFront API Reference 中的 UpdateDistribution

查询字符串

您可配置 CloudFront 是否将查询字符串参数转发到源。有关更多信息,请参阅 根据查询字符串参数缓存内容

源响应超时

源响应超时 (也称为源请求超时或源读取超时) 适用于以下两个值:

  • CloudFront 在将请求转发到自定义源后等待响应的时间长度(以秒为单位)

  • CloudFront 从收到来自源的响应的一个数据包到收到下一个数据包之间等待的时间长度(以秒为单位)

有关更多信息 (包括如何配置源响应超时),请参阅源响应超时一节中的您创建或更新分配时指定的值

同一对象的并行请求 (流量高峰)

如果 CloudFront 边缘站点收到对象请求,并且对象当前没有位于缓存中或对象已过期,则 CloudFront 立即将请求发送到源。如果遇到流量高峰(即,在源响应第一个请求之前,针对同一对象的其他请求到达边缘站点),CloudFront 先短暂中止,然后再将对象的其他请求转发到源。——通常,对第一个请求的响应会在对后续请求的响应之前到达 CloudFront 边缘站点。此短暂中止有助于减少源服务器上的不必要负载。如果其他请求不完全相同(例如,由于将 CloudFront 配置为根据请求标头或 Cookie 进行缓存),则 CloudFront 将所有唯一请求转发到源。

User-Agent 标头

如果您希望 CloudFront 基于用户用来查看内容的设备缓存不同版本的对象,建议您将 CloudFront 配置为将一个或多个以下标头转发给您的自定义源:

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

根据 User-Agent 标头值,在将请求转发到源之前,CloudFront 将这些标头的值设置为 truefalse。如果某个设备归入多个类别中,则多个值可能为 true。例如,对于一些平板电脑设备,CloudFront 可能将 CloudFront-Is-Mobile-ViewerCloudFront-Is-Tablet-Viewer 设置为 true。有关将 CloudFront 配置为根据请求标头进行缓存的更多信息,请参阅根据请求标头缓存内容

您可以将 CloudFront 配置为根据 User-Agent 标头中的值缓存对象,但我们建议您不要这样做。User-Agent 标头具有大量可能的值,并且根据这些值的缓存操作导致 CloudFront 将更多请求转发到源。

如果未将 CloudFront 配置为根据 User-Agent 标头中的值缓存对象,在将请求转发到源之前,CloudFront 将添加具有以下值的 User-Agent 标头:

User-Agent = Amazon CloudFront

无论来自查看器的请求是否包含 User-Agent 标头,CloudFront 都会添加该标头。如果来自查看器的请求包含 User-Agent 标头,CloudFront 将删除该标头。

CloudFront 如何处理自定义源服务器的响应

本主题包含有关 CloudFront 如何处理来自自定义源服务器的响应的信息。

100-继续响应

源服务器不能向 CloudFront 发送多个“100-继续”响应。在第一个“100-继续”响应之后,CloudFront 需要“HTTP 200 正常”响应。如果源服务器在第一个“100-继续”响应之后又发送了该响应,CloudFront 将返回错误。

缓存

  • 确保源服务器为 DateLast-Modified 标头字段设置有效、准确的值。

  • 如果来自查看器的请求包含 If-MatchIf-None-Match 请求标头字段,请设置 ETag 响应标头字段。如果未指定 ETag 值,CloudFront 将忽略随后的 If-MatchIf-None-Match 标头。

  • CloudFront 通常采用来自源的响应中的 Cache-Control: no-cache 标头。有关例外,请参阅同一对象的并行请求 (流量高峰)

已取消的请求

如果对象没有位于边缘缓存中,或者在 CloudFront 从源中获取对象后,查看器便终止了会话(例如,关闭浏览器)而没来得及传送请求的对象,则 CloudFront 不会将该对象缓存在边缘站点中。

内容协商

如果源在响应中返回 Vary:*,并且相应缓存行为的最小 TTL 值为 0,CloudFront 将缓存对象,但仍会将对象的每个后续请求转发到源以确认缓存包含最新版本的对象。CloudFront 不包含任何条件标头,例如 If-None-MatchIf-Modified-Since。因此,源会将对象返回到 CloudFront 以响应每个请求。

如果源在响应中返回 Vary:*,并且相应缓存行为的最小 TTL 值为任何其他值,CloudFront 将处理 Vary 标头,如CloudFront 删除或替换的 HTTP 响应标头中所述。

Cookies

如果您为缓存行为启用了 Cookie,并且如果源返回带对象的 Cookie,CloudFront 则缓存对象和 Cookie。请注意,这降低了对象的缓存能力。有关更多信息,请参阅根据 Cookie 缓存内容

中断的 TCP 连接

在源将对象返回到 CloudFront 时,如果 CloudFront 和源之间的 TCP 连接中断,CloudFront 行为将取决于源是否在响应中包含 Content-Length 标头:

  • Content-Length 标头 – 在从源中获取对象时,CloudFront 将对象返回到查看器。但是,如果 Content-Length 标头值与对象大小不匹配,则 CloudFront 不会缓存对象。

  • Transfer-Encoding: Chunked – 在从源中获取对象时,CloudFront 将对象返回到查看器。但是,如果分块响应未完成,则 CloudFront 不会对该对象进行缓存。

  • 无 Content-Length 标头 – CloudFront 将对象返回到查看器并进行缓存,但该对象可能不完整。在无 Content-Length 标头的情况下,CloudFront 无法确定 TCP 连接是偶然中断还是有意中断。

我们建议您配置 HTTP 服务器以添加 Content-Length 标头,从而防止 CloudFront 缓存部分对象。

CloudFront 删除或替换的 HTTP 响应标头

在将来自源的响应转发到查看器之前,CloudFront 将删除或更新以下标头字段:

  • Set-Cookie – 如果将 CloudFront 配置为转发 Cookie,则它将 Set-Cookie 标头字段转发到客户端。有关更多信息,请参阅根据 Cookie 缓存内容

  • Trailer

  • Transfer-Encoding – 如果源返回该标头字段,在将响应返回到查看器之前,CloudFront 将值设置为 chunked

  • Upgrade

  • Vary – 请注意以下几点:

    • 如果配置 CloudFront 以将任何设备特定的标头转发到源(CloudFront-Is-Desktop-ViewerCloudFront-Is-Mobile-ViewerCloudFront-Is-SmartTV-ViewerCloudFront-Is-Tablet-Viewer),并且配置源以将 Vary:User-Agent 返回到 CloudFront,则 CloudFront 将 Vary:User-Agent 返回到查看器。有关更多信息,请参阅基于设备类型配置缓存

    • 如果配置源以将 Accept-EncodingCookie 包含在 Vary 标头中,则 CloudFront 将这些值包含在对查看器的响应中。

    • 如果配置 CloudFront 以将标头的白名单转发到源,并且配置源以通过 Vary 标头将标头名返回到 CloudFront(如 Vary:Accept-Charset,Accept-Language),则 CloudFront 将具有这些值的 Vary 标头返回到查看器。

    • 有关 CloudFront 如何处理 Vary 标头中的 * 值的信息,请参阅内容协商

    • 如果配置源以将任何其他值包含在 Vary 标头中,在将响应返回到查看器之前,CloudFront 将删除这些值。

  • Via – 在对查看方的响应中,CloudFront 将值设置为以下内容:

    Via: http-version alphanumeric-string.cloudfront.net (CloudFront)

    例如,如果客户端通过 HTTP/1.1 发出请求,该值类似于如下所示:

    Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

最大文件大小

CloudFront 将返回到查看器的响应正文的最大大小为 20 GB。这包括未指定Content-Length标头值的分块传输响应。

源不可用

如果源服务器不可用,并且 CloudFront 收到位于边缘缓存中但已过期的对象的请求(例如,由于在 Cache-Control max-age 指令中指定的期限已过),CloudFront 将提供该对象的已过期版本或提供自定义错误页面。有关配置自定义错误页面时 CloudFront 行为的更多信息,请参阅当您已配置自定义错误页面时 CloudFront 如何处理错误

在某些情况下,将移出很少请求的对象,并且在边缘缓存中不再提供该对象。CloudFront 无法提供已移出的对象。

重定向

如果更改对象在源服务器上的位置,您可以配置 Web 服务器以重定向请求到新位置。在配置重定向后,查看器第一次提交针对对象的请求时,CloudFront 将请求发送到源,源响应重定向(例如,302 Moved Temporarily)。CloudFront 缓存重定向并将其返回到查看器。CloudFront 不会进行重定向。

您可以配置 Web 服务器以将请求重定向到以下位置之一:

  • 对象在原服务器上的新 URL。在查看器进行重定向以访问新的 URL 时,查看器将绕过 CloudFront,直接到达源。因此,我们建议您不要将请求重定向到对象在源上的新 URL。

  • 对象新的 CloudFront URL。当查看器提交包含新 CloudFront URL 的请求时,CloudFront 将从源上的新位置获取对象,并将其缓存在节点中,然后将该对象返回到查看器。对象随后的请求将由边缘站点提供。这避免了查看器从源请求对象相关的延迟和负载。但是,对象的每个新请求将产生两个 CloudFront 请求的费用。

传输编码

CloudFront 仅支持 Transfer-Encoding 标头的 chunked 值。如果源返回 Transfer-Encoding: chunked,则 CloudFront 在边缘站点中收到对象后将该对象返回到客户端,然后以分块格式缓存该对象以提供给后续请求。

如果查看器发出 Range GET 请求,并且源返回 Transfer-Encoding: chunked,则 CloudFront 将整个对象返回到查看器而不是请求的范围。

如果无法预先确定响应的内容长度,建议您使用分块编码。有关更多信息,请参阅中断的 TCP 连接