AWS CloudFront未更新文件求助:自定义域名仍显示旧内容
解决方案:自定义域名访问CloudFront仍显示旧S3内容
嘿,我完全懂你现在的头疼——刚替换了S3里的网站内容,直接访问CloudFront或S3原生域名能看到新页面,但自定义域名却还停留在旧的“under construction”页面,哪怕调了TTL、发了失效请求也没效果对吧?咱们一步步排查解决:
1. 先排除浏览器本地缓存的干扰
这是最常见的“假问题”!有时候浏览器会死死缓存旧页面,哪怕CloudFront已经更新了内容:
- 试试用无痕/隐私模式访问你的自定义域名,如果能看到新内容,那就是本地缓存的锅。可以手动清空浏览器缓存(快捷键
Ctrl+Shift+Delete),或者告诉用户等待缓存自然过期(根据你设置的TTL)。 - 也可以用
curl -I https://你的自定义域名命令查看响应头,看X-Cache字段:如果是Hit from cloudfront说明命中了缓存,Miss则会拉取新内容。
2. 确认自定义域名的DNS指向与CloudFront配置匹配
很多新手会在这里踩坑:
- 检查你的DNS服务商(比如Route 53)里的A/AAAA记录,别名目标是不是正确的CloudFront分发ID?别不小心指向了旧的分发或者错误的资源。
- 登录CloudFront控制台,找到你的分发,查看**备用域名(CNAME)**列表,确认你的自定义域名已经正确添加,并且SSL证书(如果用HTTPS)是完全匹配的——CloudFront的证书必须覆盖这个自定义域名,而且要部署在us-east-1区域(如果是AWS Certificate Manager的证书)。
3. 检查CloudFront失效操作是否到位
你说执行了失效,但可能有细节没做对:
- 确认失效的路径是
/*(全站点失效)或者具体的/index.html(如果旧内容是首页),别只填了单个文件却漏了根路径的默认索引页。 - CloudFront失效不是即时生效的,需要5-10分钟同步到全球边缘节点,别刚点完失效就急着测试。
- 如果你用了CloudFront缓存策略(而不是手动设置TTL),那你之前改的元数据和TTL可能被策略覆盖了。去分发的“缓存策略”选项卡看看,是不是策略里的默认TTL比你预期的长,或者有没有开启缓存优化导致旧内容没被替换。
4. 验证S3静态网站的基础配置
虽然你说直接访问S3域名正常,但还是快速检查下:
- 确认S3 Bucket的静态网站托管设置里,索引文档是你新上传的
index.html(或你用的默认文件名),别不小心还是指向了已删除的旧文件。
5. 强制刷新边缘节点缓存
如果以上都没问题,可能是部分边缘节点的缓存没同步:
- 再发一次全站点失效请求(路径填
/*),然后等待10分钟左右,再用不同地区的网络(比如手机热点)测试自定义域名,看是否能加载新内容。
按照这个顺序排查,基本能解决你的问题!
内容的提问来源于stack exchange,提问作者mez0
相关产品推荐
相关产品推荐

