Amazon CloudFront延迟

我正在尝试使用AWS S3和CloudFront来开发我正在开发的Web应用程序。

在应用程序中,我让用户将file upload到S3存储桶(使用AWS开发工具包),并通过CloudFront CDN使其可用,但问题是即使文件在S3存储桶中上传并准备就绪, 2在CloudFront CDNurl中可用,这是正常的吗?

CloudFront尝试实时从原始服务器获取未caching的内容。 没有“复制延迟”或类似的问题,因为CloudFront是一个直通CDN。 每个CloudFront边缘位置仅了解您的网站的存在和configuration; 它不知道你的内容,直到收到它的请求。 发生这种情况时,CloudFront边缘将从源服务器获取请求的内容,并将其caching,以便为后续请求提供服务。

这里发生的问题与一个有时被称为“否定caching”的概念有关 – caching请求不起作用的事实 – 通常这样做是为了避免锤击任何被caching的请求的起源,这些请求可能会失败无论如何。

默认情况下,当您的源返回HTTP 4xx或5xx状态码时,CloudFront会将这些错误响应caching五分钟,然后将对象的下一个请求提交给您的源,以查看导致错误的问题是否已解决,请求对象现在可用。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html

如果浏览器或其他任何设备尝试从特定的CloudFront边缘下载文件,然后上传到S3完成,则S3将返回一个错误,并且在该边缘位置的CloudFront将caching该错误并记住接下来的5分钟,不要再打扰了。

不过不用担心,这个计时器是可以configuration的,所以如果浏览器在这种情况下进行操作,那么你应该仍然可以修复它。

您可以为CloudFrontcaching的每个4xx和5xx状态代码指定错误caching持续时间( 错误caching最小TTL) 。 有关过程,请参阅configuration错误响应行为 。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html


在控制台中进行configuration

  • 查看分发configuration时,单击Error Pages选项卡。

  • 对于要定制时间的每个错误,请单击“ Create Custom Error Response

  • 从下拉列表中select您要修改的错误代码,例如403 (禁止)或404 (未find) – 您的存储桶configuration确定S3返回丢失对象的代码,所以如果您不确定,请更改403然后重复该过程并改变404。

  • Error Caching Minimum TTL (seconds)0

  • 将“ Customize Error Response设置为“ No (如果设置为“ Yes ,则此选项将启用错误的自定义响应内容,这不是您想要的内容)激活此选项不在此问题的范围内。

  • 点击Create 。 这将使您回到之前的视图,您将在其中看到刚刚定义的代码的Error Caching Minimum TTL

针对您要从默认行为(即上面讨论的300秒保持时间)更改的每个HTTP响应代码重复这些步骤。

完成所有需要的更改后,返回到分配列表所在的主CloudFront控制台屏幕。 等待分配状态从“进行中”更改为“ Deployed (通常约20分钟,以便将更改推送到所有边缘)并进行testing。

这些新文件是第一次写入S3还是更新到现有文件? S3为新对象提供了写后读写一致性,并且在CloudFront的拉模式下,您不应该将新文件写入S3。 如果你是,那么我会打开AWS的票。

如果这些是对现有文件的更新,那么您同时具有S3最终一致性和CloudFrontcaching到期处理。 这两者都可能导致这种行为。