如何预热CloudFront边缘服务器的缓存?

Ash*_*oel 5 caching amazon-web-services amazon-cloudfront

我们有一个需要预热特定CloudFront分发的所有边缘服务器的缓存的需求。为此,我们需要将一些呼叫定向到所有边缘服务器。有什么方法可以识别区域内或全局的所有边缘服务器?

例如:

浏览此处提供的信息时:http : //aws.amazon.com/cloudfront/details/

我发现亚洲有多个边缘服务器,以孟买(印度)和香港为例,我有兴趣将一些HTTP调用定向到这些边缘服务器。我该如何实现?如果我能获得所有这些服务器的身份,那将很棒。

同样,我们最初想到的是以下方法:在所有区域中都有一个微型实例,并从这些区域访问我们的资产。

但是这种方法存在问题。从CloudFront文档中,我已经了解到边缘服务器之间没有层次结构,如果任何边缘服务器没有所需的资产,它将直接向Origin服务器索要该资产。现在,一个区域可以具有多个边缘服务器。如果在一个区域内,所有边缘服务器都没有所需的资产,那么它将无法实现此目的。因此,我的问题是如何确保区域中的所有边缘服务器在其缓存中都具有必需的资产?

请注意,内容本质上是静态的。而且,如果不可能覆盖所有边缘服务器,那么即使有一种方法可以覆盖70%的边缘服务器,我也想尝试一下。

Bru*_*e P 8

这是几年前亚马逊员工关于预热的帖子

问题是,如果每个人都将对象预缓存到边缘位置,则所有边缘位置都会耗尽空间,因为它们会被可能被访问或可能不被访问的对象淹没。现在,边缘位置仅缓存用户正在访问的对象,如果服务器上没有更多空间,则会转储最近未访问的对象。如果是服务,我不确定预缓存场景将如何工作。

除非您知道您将在很长一段时间内获得稳定的流量,否则预热可能根本无效。CloudFront 很可能会使您的对象过期,以便为其他客户对象腾出空间,如果他们获得的流量比您自己的多(或最近)。一旦发生这种情况,您就完全失去了可以执行的任何预热的优势。

  • 如果是这种情况,那么退出 CloudFront 可能对您的情况最有意义。如果您的站点流量较低,并且您觉得需要预热 CDN 缓存,那么您只会在 AWS 上花费大量资金。每次运行任何类型的预热过程时,您都会为这些请求、数据传输等产生费用。 (3认同)