如何在AWS CloudFront中启用图片缓存策略?
解决CloudFront图片缓存策略未生效的步骤
1. 确认缓存策略已关联到图片对应的分发行为
- 登录AWS CloudFront控制台,找到目标分发,进入「行为」标签页
- 检查是否存在针对图片路径/后缀的独立行为(比如
/images/*、*.png、*.jpg):- 若已有该行为,查看「缓存策略」列是否选择了你创建的自定义策略(而非「无缓存策略」或默认策略)
- 若无独立行为,点击「创建行为」:
- 路径模式填写图片的匹配规则(例如
*.png或/assets/images/*) - 在「缓存策略」下拉框中选择你已配置的缓存策略
- 保存后等待分发部署完成(通常需要10-15分钟,控制台会显示「已部署」状态)
- 路径模式填写图片的匹配规则(例如
2. 检查缓存策略的核心配置是否符合图片缓存要求
结合你提供的缓存策略截图,重点确认以下项:
- TTL设置:静态图片建议设置长周期,比如默认TTL设为
31536000秒(1年),最小TTL不低于3600秒(1小时),避免频繁回源 - 缓存控制头部:确保策略配置了返回给客户端的
Cache-Control头部(比如public, max-age=31536000)——这是PageSpeed检测缓存策略的核心依据,缺失该头部会导致PageSpeed判定未设置缓存 - 缓存键配置:静态图片无需包含额外请求头或查询字符串(除非业务需要区分缓存),仅保留URI作为缓存键即可,避免缓存碎片化
3. 验证缓存是否生效
- 浏览器开发者工具验证:打开F12→「网络」标签,刷新页面后查看图片请求的响应头:
- 确认存在
CF-Cache-Status头部,值为HIT表示命中缓存(首次请求为MISS,再次刷新应变为HIT) - 确认
Cache-Control头部与你配置的策略一致
- 确认存在
- 命令行验证:执行
curl -I https://你的域名/目标图片路径.png,查看返回的缓存相关头部
4. 常见问题排查
- 若策略已关联但未生效:
- 等待CloudFront分发部署完成(控制台状态为「已部署」才会生效)
- 检查源服务器是否返回
Cache-Control: no-cache/no-store,这类头部会覆盖CloudFront策略——可在缓存策略中开启「覆盖源的Cache-Control头部」选项 - 开启CloudFront实时日志,查看请求是否匹配到了对应的图片行为
内容的提问来源于stack exchange,提问作者Anton Swanevelder
相关产品推荐
相关产品推荐

