【问题标题】:CloudFront issue when using Load Balancer and Route 53使用负载均衡器和 Route 53 时的 CloudFront 问题
【发布时间】:2014-10-26 01:55:41
【问题描述】:

我的想法是使用云端缓存一个在 EC2 中的整个站点。但我很难做到这一点。如果我将 cloudfront 选项 Forward Headers 设置为 none,则会缓存来自 apache 的默认 index.html(可能是因为 CF 正在缓存 LB URL)。如果我将 Forward Headers 设置为 whitelist 并在 Whitelist Headers 中添加 host 网站会正常显示,但我可以在响应头:

X-Amz-Cf-Id:Ij8TsEU2hPehG53Op6LX1zFDmZfYWBOVFn8el8ApicCQYdYEi69HsQ==
X-Cache:Miss from cloudfront

这是当前的场景:

  1. Route 53 与 A 别名指向 CloudFront(对于我的裸域和 www
  2. CloudFront with Origin Domain Name = 负载均衡器 DNS 名称,cname 也配置为裸域和 www
  3. 使用 EC2 的负载均衡器
  4. 具有多个站点的 EC2(我只想在其中一个站点中使用 CF)

谁能帮助我如何正确配置它?

更新 1 快速观察一下,该网站位于 WordPress 中。但是,我认为没有必要使用任何 cdn 模块(如 W3 Total Cache),因为我希望缓存整个站点。

【问题讨论】:

  • X-Cache:Miss from cloudfront 正是您应该期望看到的,第一次通过 Cloudfront 请求资源。这意味着 Cloudfront 没有该页面的缓存副本。刷新,您应该开始看到“命中”而不是“未命中”。你试过吗?
  • 你好迈克尔,很遗憾没有......我在配置后重新加载了几个页面,现在(9 小时后)我仍然收到“X-Cache:Miss from cloudfront”。这里的古玩是,如果我将 Forward Headers 设置为 None,则默认 index.html 被缓存
  • 在您的 CF 发行版的行为部分,您将对象缓存设置为什么?如果它设置为“使用原始缓存标头”,那么您需要为每个请求返回一个 Cache-Control 标头。如果您不这样做,那么 CF 将立即有效地使每个请求过期。您可以通过将对象缓存设置为自定义并指定 TTL 来对此进行测试。
  • @BruceP,你是对的。现在它工作正常。你能写一个答案只是为了在stackoverflow中注册吗?

标签: amazon-cloudfront amazon-elb


【解决方案1】:

查看您的 CloudFront 分配的行为部分。对象缓存有一个设置。如果它设置为“使用原始缓存标头”,那么您需要为每个请求返回一个 Cache-Control 标头。如果您的应用程序没有设置 Cache-Control 标头,则将 Object Caching 设置为“Customize”,并在“Minimum TTL”字段中为您的对象设置适当的 TTL。

如果您没有设置自己的 Cache-Control 标头,并且将此设置保留为“使用原始缓存标头”的默认设置,那么您实际上将违背 CDN 的目的,因为通过 CDN 发出的每个请求都会有效立即过期,因此通过 CDN 的每个请求仍将从源获取。

【讨论】:

    猜你喜欢
    • 2019-07-16
    • 2015-11-03
    • 2016-10-29
    • 2022-01-23
    • 2016-02-09
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多