S3 + Cloudfront + Route53 奇怪的缓存问题

问题描述 投票:0回答:2

我有一个使用 S3、Cloudfront 和 Route53 的静态网站。我有版本 1,现在更新到版本 2。

  • 如果我使用 S3 端点 (http://abc.s3-website-eu-west-1.amazonaws.com/) 查看网站,我会看到版本 2。
  • 如果我使用 Cloudfront 端点 (https://xyz.cloudfront.net/),我会再次看到版本 2。
  • 如果我使用在 Route53 中配置的域(指向 cloudfront 分发的记录),我会看到版本 1。我没有为 DNS 记录设置任何 TTL(默认行为),并且这种情况已经持续约 1 周了.

一些额外的检查:

dig A xyz.cloudfront.net
dig A mydomain.com
指向相同的 IP。

curl 的输出描述了之前的情况(版本 1),其中 mydomain.com 配置为指向 www.example.com。现在我让它直接指向 cloudfront 发行版

curl -sD - https://example.com -o /dev/null
HTTP/1.1 302 Moved Temporarily
Content-Length: 0
Connection: keep-alive
Server: CloudFront
Location: https://www.example.com/
X-Cache: Miss from cloudfront
Via: 1.1 qwe.cloudfront.net (CloudFront)
...
curl -sD - https://xyz.cloudfront.net -o /dev/null
HTTP/2 200
content-type: text/html
content-length: 537
date: Fri, 18 Nov 2022 20:35:41 GMT
last-modified: Tue, 15 Nov 2022 10:09:03 GMT
etag: "..."
server: AmazonS3
x-cache: Miss from cloudfront
via: 1.1 bla.cloudfront.net (CloudFront)
...

还有什么我可以检查以找出配置错误的地方吗?

amazon-web-services amazon-cloudfront amazon-route53
2个回答
0
投票

DNS 服务器 (Route53) 和这些 DNS 记录上的 TTL 在这里完全不相关。这些与内容缓存无关。

您的

curl
命令显示您的请求正在路由到不同的 CloudFront 边缘节点(
qwe.cloudfront.net
bla.cloudfront.net
)。

这些节点之一似乎之前曾为您的网站提供过请求,因此它存储了一个缓存版本,当您现在发出命中该 CloudFront 边缘节点的新请求时,它仍在提供该版本。另一个节点没有存储缓存版本,因此当您的请求到达它时,它会返回到原点 (S3) 并拉取最新版本。

当您在源服务器上发布新内容而不通知 CDN 需要清除旧的缓存内容时,这几乎是 CloudFront 或任何其他 CDN 的预期行为。您需要 告诉 CloudFront 使缓存无效,这将导致它从所有边缘位置删除内容的缓存版本。


0
投票

我也有同样的问题。这是因为另一个服务被用来部署网络。 AWS 放大。我解决了这个问题,删除了与 aws amplify 相关的所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.