amazon-web-services - Amazon CloudFront 延迟

标签 amazon-web-services amazon-s3 amazon-cloudfront

我正在为我正在开发的 Web 应用程序试验 AWS S3 和 CloudFront。

在应用程序中,我让用户将文件上传到 S3 存储桶(使用 AWS 开发工具包)并通过 CloudFront CDN 使其可用,但问题是即使文件在 S3 存储桶中上传并准备就绪,也需要大约一分钟或2 在 CloudFront CDN url 中可用,这正常吗?

最佳答案

CloudFront 尝试实时从源服务器获取未缓存的内容。不存在“复制延迟”或类似问题,因为 CloudFront 是直通式 CDN。每个 CloudFront 边缘站点只知道您的站点的存在和配置;在收到对它的请求之前,它不知道您的内容。发生这种情况时,CloudFront 边缘会从源服务器获取请求的内容,并在适当时对其进行缓存,以便为后续请求提供服务。

这里发生的问题与有时称为“负缓存”的概念有关 - 缓存请求不起作用的事实 - 通常这样做是为了避免使用可能失败的请求来破坏正在缓存的任何内容的来源反正。

By default, when your origin returns an HTTP 4xx or 5xx status code, CloudFront caches these error responses for five minutes and then submits the next request for the object to your origin to see whether the problem that caused the error has been resolved and the requested object is now available.

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



如果浏览器或其他任何东西在上传到 S3 完成之前尝试从该特定 CloudFront 边缘下载文件,S3 将返回错误,并且 CloudFront(在该边缘位置)将缓存该错误并记住,例如接下来的 5 分钟,不要费心再试一次。

不过不用担心——这个计时器是可配置的,所以如果浏览器在后台执行此操作并且不在您的控制范围内,您仍然应该能够修复它。

You can specify the error-caching duration—the Error Caching Minimum TTL—for each 4xx and 5xx status code that CloudFront caches. For a procedure, see Configuring Error Response Behavior.

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



在控制台中配置它 :
  • 查看分发配置时,单击Error Pages标签。
  • 对于要自定义时间的每个错误,首先单击 Create Custom Error Response .
  • 从下拉列表中选择您要修改的错误代码,如403 (禁止)或404 (未找到)- 您的存储桶配置决定了 S3 为丢失的对象返回哪个代码,因此如果您不确定,请更改 403,然后重复该过程并更改 404。
  • 设置 Error Caching Minimum TTL (seconds)0
  • 离开 Customize Error Response设置为 No (如果设置为 Yes,此选项会启用自定义响应内容的错误,这不是您想要的。激活此选项超出了此问题的范围。)
  • 点击Create .这将带您回到上一个 View ,您将在其中看到 Error Caching Minimum TTL对于您刚刚定义的代码。

  • 对您想要从默认行为(即 300 秒保持时间,如上所述)更改的每个 HTTP 响应代码重复这些步骤。

    完成所需的所有更改后,返回到列出分配的 CloudFront 主控制台屏幕。等待分发状态从 In Progress 更改至Deployed (以前,这需要相当长的时间,但现在通常需要大约 5 分钟才能将更改推送到所有边缘)并测试。

    关于amazon-web-services - Amazon CloudFront 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35534233/

    相关文章:

    ios - Amazon Web Service (AWS) S3,如何上传受密码保护的文件夹?

    amazon-web-services - 在 Route53 中只管理一个子域

    ruby - 使用 aws-sdk gem 列出 s3 中的所有文件

    amazon-s3 - ListBucketResult xml 试图通过 CloudFront 在 S3 中显示站点的主页

    amazon-web-services - 如何将多个域名路由到同一个 amazon S3 存储桶位置?

    amazon-web-services - AWS QuickSight 嵌入 CLI 错误 - aws : error: argument command: Invalid choice, 有效的选择是:

    amazon-web-services - 在 AWS Lambda 中运行云形成代码?这可能吗?

    java - 是否可以将文件从共享点复制到亚马逊 s3 或 SAN 存储?

    amazon-web-services - 从亚马逊 s3 存储桶中检索静态文件

    java - 我应该使用什么类来代替已弃用的 AmazonCloudFrontClient?