【问题标题】:AWS CloudFront not invalidated even after successful execution of `create-invalidation` command即使在成功执行“create-invalidation”命令后,AWS CloudFront 也不会失效
【发布时间】:2019-01-24 19:42:10
【问题描述】:

我在托管静态网站的 S3 存储桶前面有一个 AWS Cloudfront 分发版。每次部署时,我都会使用 AWS CLI 使用 create-invalidation --distribution-id $CDN_DISTRIBUTION_ID --paths "/*" 命令使 Cloudfront 发行版失效,该命令似乎运行成功。

问题在于它似乎并没有失效。如果我在 Chrome 上打开生产网站,我会收到该网站的旧版本,如果我在没有历史记录的隐身浏览器中打开,我会按预期获得最新版本。

我需要一些帮助来了解一些潜力,以便我知道该去哪里寻找。

【问题讨论】:

  • 根据您的描述,您的浏览器正在缓存旧内容,而不是 CloudFront。

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


【解决方案1】:

如果您在 S3 中使用“index.html”作为索引文档,但使用的路径中没有 index.html,则需要使用其中没有 index.html 的路径以及 Cloudfront 的无效。

所以如果你在 s3 上有这条路径:

/some/path/index.html

您正在 Cloudfront 上像这样访问它:

http://example.com/some/path/

那么你需要做这个失效:

aws cloudfront create-invalidation --distribution-id ${YOUR_DIST_ID} --paths /some/path/

所以基本上你需要使浏览器使用的路径无效,而不是 S3 使用的路径。

如果您没有在 URL 中使用尾部斜杠,那么如果没有尾部斜杠,您可能会失效。亚马逊还说,如果你还没有标准化,那么你应该两者都做。

所以在这种情况下你会这样做:

aws cloudfront create-invalidation --distribution-id ${YOUR_DIST_ID} --paths /some/path/ /some/path

这将涵盖失效中的两种情况。

【讨论】:

  • 虽然这可能是有道理的,但在 OP 的问题的上下文中,OP 使整个缓存无效:--paths "/*"。在 OP 的情况下,使用 /some/path//some/path/index.html 无关紧要,回复:整个缓存正在失效。
猜你喜欢
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
相关资源
最近更新 更多