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

CloudFront 如何传送内容

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

CloudFront 如何将内容传输到您的用户

配置 CloudFront 以传输您的内容后,用户请求您的文件时将发生以下操作:

  1. 用户访问您的网站或应用程序,并请求一个或多个文件,例如图像文件和 HTML 文件。

  2. DNS 将请求传送到以最佳方式满足该请求的 CloudFront POP(边缘站点),通常是以延迟衡量的最近 CloudFront 边缘站点,然后将请求传送到该边缘站点。

  3. 在 POP 中,CloudFront 检查其缓存中是否存在所请求的文件。如果这些文件在缓存中,CloudFront 将它们发回给用户。如果这些文件没有 位于缓存中,它会执行以下操作:

    1. CloudFront 将该请求和分配中的规范进行比较,然后根据相应文件类型将对文件的请求转发到您的源服务器,例如,将对图像文件的请求转发到 Amazon S3 存储桶,而将对 HTML 文件的请求转发到 HTTP 服务器。

    2. 源服务器将这些文件发回边缘站点。

    3. 在源中的第一个字节到达后,CloudFront 立即开始将文件转发到用户。CloudFront 还会将文件添加到边缘站点的缓存中,以便下次有人请求这些文件时使用。

 
					为 CloudFront 付费

CloudFront 使用区域边缘缓存的方式

CloudFront 存在点 (POP)(边缘站点)确保将受欢迎的内容快速传输到查看器。CloudFront 还具有区域边缘缓存,以使更多内容更靠近查看器(即使该内容的受欢迎程度不足以使其位于 POP 上),从而有助于提高该内容的性能。

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

区域缓存的工作方式

区域边缘缓存是全球范围内部署的 CloudFront 位置,靠近查看器。它们位于源服务器和 POP(即全球边缘站点)之间,直接为查看器提供内容。当对象的受欢迎程度降低时,各个 POP 可能会删除这些对象以便为更受欢迎的内容腾出空间。区域边缘缓存具有比各 POP 更大的缓存,因此对象将在最近的区域边缘缓存位置的缓存中保留更长时间。这有助于使您的更多内容更接近查看器,并减小 CloudFront 返回源服务器的需求,同时提高查看器的总体性能。

当查看器在您的网站上或通过您的应用程序发出请求时,DNS 将请求传送到能以最佳方式满足用户请求的 POP。就延迟而言,此位置通常是最近的 CloudFront 边缘站点。在 POP 中,CloudFront 检查其缓存中是否存在所请求的文件。如果这些文件在缓存中,CloudFront 将它们发回给用户。如果文件不在缓存中,POP 将转到最近的区域边缘缓存以提取对象。

在区域边缘缓存位置中,CloudFront 将再次检查其缓存中是否有请求的文件。如果文件在缓存中,则 CloudFront 将文件转发到请求它们的 POP。在区域边缘缓存位置中的第一个字节到达后,CloudFront 立即开始将文件转发到用户。CloudFront 还会将文件添加到 POP 的缓存中,以便下次有人请求这些文件时使用。

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

注意

  • 区域边缘缓存具有与 POP 同等的功能。例如,缓存失效请求将在对象过期之前,同时从 POP 缓存和区域边缘缓存中删除对象。查看器下次请求对象时,CloudFront 将返回源以获取对象的最新版本。

  • 代理方法 PUT/POST/PATCH/OPTIONS/DELETE 直接从 POP 流入源,并且不会流过区域边缘缓存。

  • 在请求时间确定的动态内容 (已配置为转发所有标头的缓存行为) 不会流过区域边缘缓存,而是直接流入源。