簡體   English   中英

S3 + Cloudfront + Route53 奇怪的緩存問題

[英]S3 + Cloudfront + Route53 weird caching issue

我有一個使用 S3、Cloudfront 和 Route53 的 static 網站。 我有版本 1,現在更新到版本 2。

  • 如果我使用 S3 端點 ( http://abc.s3-website-eu-west-1.amazonaws.com/ ) 查看網站,我會看到版本 2。
  • 如果我使用 Cloudfront 端點 ( https://xyz.cloudfront.net/ ),我會再次看到版本 2。
  • 如果我使用我在 Route53 中配置的域(指向雲端分布的記錄),我會看到版本 1。我沒有為 DNS 記錄(默認行為)設置任何 TTL,這已經持續了大約 1 周。

一些額外的檢查:

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

curl 的 output 描述了之前的情況(版本 1),其中 mydomain.com 配置為指向www.example.com 現在我讓它直接指向雲端分布

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)
...

還有什么我可以檢查以找出配置錯誤的東西嗎?

DNS 服務器 (Route53) 和那些 DNS 記錄上的 TTL 在這里完全不相關。 這些與內容緩存無關。

您的curl命令顯示您的請求被路由到不同的 CloudFront 邊緣節點( qwe.cloudfront.netbla.cloudfront.net )。

看起來這些節點中的一個之前曾為您的網站提供過請求,因此它存儲了一個緩存版本,當您現在發出新請求命中該 CloudFront 邊緣節點時,它仍在提供服務。 另一個節點沒有存儲緩存版本,因此當您的請求命中它時,它會返回到原點 (S3) 並提取最新版本。

當您在原始服務器上發布新內容而不通知 CDN 它需要清除舊的緩存內容時,這幾乎是 CloudFront 或任何其他 CDN 的預期行為。 您需要告訴 CloudFront 使緩存無效,這將導致它從所有邊緣位置刪除內容的緩存版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM