当前位置: 首页 > 知识库问答 >
问题:

Amazon CloudFront延迟

丁星火
2023-03-14

我正在为我正在开发的web应用程序试用AWS3和CloudFront。

在应用程序中,我允许用户上传文件到S3 bucket(使用AWS SDK)并通过CloudFront CDN使其可用,但问题是即使文件在S3 bucket中上传并准备就绪,也需要大约一到两分钟才能在CloudFront CDN url中可用,这正常吗?

共有1个答案

陶睿
2023-03-14

CloudFront尝试实时从原始服务器获取未缓存的内容。不存在“复制延迟”或类似问题,因为CloudFront是一个拉通CDN。每个CloudFront edge位置只知道您站点的存在和配置;在收到请求之前,它不知道您的内容。当发生这种情况时,CloudFront edge从原始服务器获取所请求的内容,并根据需要将其缓存,以便为后续请求提供服务。

这里发生的问题与一个有时被称为“负缓存”的概念有关--缓存请求无法工作的事实--这样做通常是为了避免用可能失败的请求重击正在缓存的内容的起源。

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

- http://docs.aws.amazon.com/amazoncloudfront/latest/developerguide/custom-error-pages.html

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

不过,不用担心--这个计时器是可配置的,所以如果浏览器在你的控制之外暗地里这么做,你还是可以修复它的。

您可以为CloudFront缓存的每个4xx和5xx状态代码指定错误缓存持续时间(错误缓存最小TTL)。有关过程,请参见配置错误响应行为。

- http://docs.aws.amazon.com/amazoncloudfront/latest/developerguide/custom-error-pages.html

要在控制台中配置此功能,请执行以下操作:

从下拉列表中选择要修改的错误代码,如403(禁止)或404(未找到)--桶配置确定S3为丢失的对象返回哪些代码,因此如果您不确定,请更改403,然后重复该过程并更改404。

错误缓存最小TTL(秒)设置为0

自定义错误响应设置为(如果设置为,则此选项启用错误的自定义响应内容,这不是您想要的。激活此选项超出了本问题的范围。)

单击创建。这将使您回到前面的视图,您将看到error Caching Minimum ttl用于刚才定义的代码。

当您完成了所需的所有更改后,返回CloudFront控制台主屏幕,其中列出了发行版。等待分发状态从inprogress更改为deploymed(以前,这需要相当长的时间,但现在通常需要5分钟左右才能将更改推出到所有边缘)并进行测试。

 类似资料:
  • 问题内容: 我正在尝试使用新的React Lazy和Suspense创建后备加载组件。这很好用,但后备时间仅显示几毫秒。有没有办法增加额外的延迟或最短时间,因此我可以在渲染下一个组件之前显示该组件的动画? 现在懒导入 等待组件: 我可以做这样的事情吗? 问题答案: 函数应该返回对象的承诺,该对象由具有默认导出功能的模块返回。不会返回承诺,也不能那样使用。尽管任意承诺可以: 如果目标是提供 最小的

  • 让事件延迟发生 用法: Your browser does not support the video tag. 案例:小台灯 功能:按下按钮,5s后灯亮,松开按钮,5s后灯灭 工作原理: 每一个输入都会在一段时间后(配置项中提供)被传送到输出。 当按钮被按下后,转动电机;一秒后再反转

  • 问题内容: 我正在尝试制作一个Java应用程序,该应用程序能够在检测到Midi设备后在计算机上播放笔记。 一旦获得所需的Midi设备,我就设置了接收器,该设备的发送器将向其发送MIDI消息。 类MyReceiver看起来像: 当我运行代码并开始在Midi设备上播放时,我的等待时间很长(我听不到即时的笔记)。 我该如何解决这个问题? 问题答案: 我正在使用使用asio驱动程序来避免延迟的JAsioH

  • 问题内容: 该Plunkr有2个链接。左侧的那个正在使用ng-click指令,并插入了on angular-touch模块。如ng- click的角接触模块描述中所述,ng-click链接不应具有300ms的延迟。但是,如果您在移动设备上进行测试,情况仍然如此。 那么plunkr是否会阻止正确的功能,因为它是在iFrame中执行的或类似的操作,还是需要将Fastclick.js插入项目才能使指令正

  • 我一直在寻找能在按键之间有一点延迟的方法。我一直在制作这个程序,它使用JIntellitype库读取全局热键,然后启动您指定的任何一个按键序列,例如按numpad1将执行一个B C序列。我的问题是,如果我使用线程。睡眠它只是延迟X个时间,然后按所有指定的键,在任何按键之间没有任何延迟。有人对如何解决这个问题有什么建议吗?提前谢谢! 这就是我用来发送机器人类按键的东西

  • 我正面临着G1GC算法中GC停顿的持续增加。服务延迟随着时间的推移继续增长。一旦发生这种情况,我将重新启动服务,延迟时间将恢复正常。启动后,等待时间再次随着时间的推移而增加。