AWS CloudFront缓存键配置咨询:带唯一查询串的请求处理
CloudFront缓存配置解决带查询串请求的缓存击穿问题
核心目标
实现两个关键效果:
- 无查询串的静态URL正常走CloudFront缓存,保留CDN性能优势
- 带唯一查询串的请求直接回源,且不被CloudFront缓存,避免大量新访客触发刷新时的缓存击穿
具体配置步骤
1. 调整缓存键策略(Cache Key Policy)
进入CloudFront控制台,找到目标分发的「缓存」标签页,编辑缓存键策略:
- 取消「查询字符串」的包含配置,选择**「排除所有查询字符串」**
- 确保缓存键仅包含路径(Path)、主机头(Host Header)等必要字段,完全排除查询串参数
2. 配置缓存行为的查询串处理规则
针对静态资源的默认行为(或对应路径的行为),修改「查询字符串转发和缓存」设置:
- 选择**「转发所有查询字符串,但不基于查询字符串进行缓存」**
- 这个设置的作用是:带查询串的请求会把参数转发到源站,但CloudFront不会将查询串纳入缓存键,因此这类请求永远不会被缓存,每次都会回源;而无查询串的请求则正常匹配缓存键,命中现有缓存
3. 验证配置有效性
- 无查询串请求:查看响应头的
X-Cache字段,应显示Hit from cloudfront,确认缓存命中 - 带查询串请求:查看
X-Cache字段,应显示Miss from cloudfront,且重复请求该带查询串的URL时,依然会回源,不会被缓存
额外说明
- 纯静态源站默认支持带查询串的请求,无需额外修改源站配置
- 由于每个访客每年仅触发一次带查询串的请求,回源压力极低,不会影响源站稳定性
- 若有特定资源需要单独缓存规则,可创建独立行为进行配置,但本次需求无需额外调整
内容的提问来源于stack exchange,提问作者Klaptrap
相关产品推荐
相关产品推荐

