

# CloudFront 如何交付内容
<a name="HowCloudFrontWorks"></a>

经过一些初步的设置，CloudFront 与您的网站或应用程序协作并加快内容交付速度。此部分说明 CloudFront 如何在查看器请求您的内容时提供该内容。

**Topics**
+ [CloudFront 如何向用户提供内容](#HowCloudFrontWorksContentDelivery)
+ [CloudFront 如何使用区域边缘缓存](#CloudFrontRegionaledgecaches)

## CloudFront 如何向用户提供内容
<a name="HowCloudFrontWorksContentDelivery"></a>

配置 CloudFront 以传输您的内容后，用户请求您的对象时将发生以下操作：

1. 用户访问您的网站或应用程序，并发送对于某个对象的请求，例如图像文件和 HTML 文件。

1. DNS 将该请求传送到能以最佳方式满足该请求的 CloudFront POP（边缘站点），通常是以延迟来衡量最近的 CloudFront POP 边缘站点。

1. CloudFront 检查其缓存中是否有所请求的对象。如果对象在缓存中，CloudFront 会将它返回给用户。如果对象*不* 在缓存中，CloudFront 将执行以下操作：

   1. CloudFront 将该请求和分配中的说明进行比较，然后针对相应的对象将此请求转发到源服务器，例如，转发到 Amazon S3 存储桶或 HTTP 服务器。

   1. 源服务器将此对象发回给边缘站点。

   1. 源中的第一个字节到达后，CloudFront 就开始将此对象转发到用户。CloudFront 还将此对象添加到缓存中，方便下次有人请求该对象。

![\[通过 CloudFront 从用户到源的请求和响应\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/images/how-cloudfront-delivers-content.png)


## CloudFront 如何使用区域边缘缓存
<a name="CloudFrontRegionaledgecaches"></a>

CloudFront 节点（也称为 *POP* 或*边缘站点*）可确保将受欢迎的内容快速提供给查看器。CloudFront 还具有*区域边缘缓存*，该缓存可让您的更多内容更靠近查看器（即使该内容的受欢迎程度不足以使其位于 POP 上）以帮助改善该内容的表现。

区域边缘缓存可为所有类型的内容提供帮助，特别是随着时间的推移变得不太常用的内容。这样的示例包括用户生成的内容，例如视频、照片或插图；电子商务资产，例如产品照片和视频；以及新闻和事件相关的内容 (可能突然受到大众欢迎)。

**区域缓存的工作方式**  
区域边缘缓存是全球范围内部署的 CloudFront 位置，靠近查看器。它们位于源服务器和 POP（即全球边缘站点）之间，全球边缘站点直接为查看器提供内容。当对象的受欢迎程度降低时，各个 POP 可能会删除这些对象以便为更受欢迎的内容腾出空间。区域边缘缓存具有比各 POP 更大的缓存，因此对象将在最近的区域边缘缓存位置的缓存中保留更长时间。这有助于让更多内容更为靠近读者，减少 CloudFront 返回源服务器的需要，提升读者阅读体验。

当查看器在您的网站上或通过您的应用程序发出请求时，DNS 将请求传送到能以最佳方式满足用户请求的 POP。就延迟而言，此位置通常是最近的 CloudFront 边缘站点。在 POP 中，CloudFront 检查其缓存中是否存在所请求的对象。如果对象在缓存中，CloudFront 会将它返回给用户。如果对象不在缓存中，POP 通常将转到最近的区域边缘缓存以提取此对象。有关 POP 何时跳过区域边缘缓存并直接转到源的更多信息，请参阅以下注释。

在区域边缘缓存位置中，CloudFront 将再次检查其缓存中是否有请求的对象。如果对象位于缓存中，则 CloudFront 将其转发到请求它的 POP。区域边缘缓存位置的第一个字节到达后，CloudFront 就开始将对象转发到用户。CloudFront 还将此对象添加到 POP 中的缓存中，方便下次有人请求该对象。

对于未在 POP 和区域边缘缓存位置缓存的对象，CloudFront 将请求与分配中的说明进行比较，并将请求转发到源服务器。在源服务器将对象发送回区域边缘缓存位置后，此对象会转发到 POP，并且 CloudFront 将它转发到用户。在这种情况下，CloudFront 还会将此对象添加到区域边缘缓存位置中的缓存以及 POP，方便查看器下次请求此对象。这将确保区域中的所有 POP 都共享本地缓存，从而消除了针对源服务器的多个请求。CloudFront 还将保留与源服务器的持久性连接，以便尽快从源中提取对象。

**注意**  
区域边缘缓存具有与 POP 同等的功能。例如，缓存失效请求将在对象过期之前，同时从 POP 缓存和区域边缘缓存中删除对象。查看器下次请求对象时，CloudFront 将返回源以获取对象的最新版本。
代理 HTTP 方法（`PUT`、`POST`、`PATCH`、`OPTIONS` 和 `DELETE`）直接从 POP 流入源，并且不会通过代理流过区域边缘缓存。
在请求时确定的动态请求不会流经区域边缘缓存，而是直接到达源。
当源是 Amazon S3 存储桶且请求的最佳区域边缘缓存与 S3 存储桶位于同一 AWS 区域时，POP 会跳过区域边缘缓存，直接进入 S3 存储桶。

下图说明了请求和响应如何流经 CloudFront 边缘站点和区域边缘缓存。

![\[此图显示通过边缘站点和区域边缘缓存的，从查看器到源的请求/响应路径。\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/images/regional-edge-caches.png)
