You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFront如何针对特定查询字符串禁用缓存?

CloudFront指定查询字符串跳过缓存配置方案

你可以通过以下两种常用方案实现需求:

方案一:结合缓存策略 + 缓存键规则配置(推荐,CloudFront新版控制台支持)

  • 首先进入对应CloudFront分发的行为配置页,选择你要修改的目标行为,点击编辑
  • 找到「缓存键和源请求」设置模块:
    • 查询字符串转发策略选择全部转发,缓存基于白名单
    • 白名单里不要添加你要跳过缓存的目标查询字符串
    • 然后下拉找到「TTL设置」,将最小TTL、默认TTL都设置为0,最大TTL可保留默认或者也设为0
    • 额外新增一条缓存键例外规则:当请求中不存在你指定的查询字符串时,调整TTL为你正常需要的缓存时长
  • 保存配置等待分发生效即可

方案二:通过CloudFront Function实现更灵活的控制

如果你的规则更复杂(比如多个指定查询字符串匹配),可以用轻量的CloudFront Function处理:

  • 进入CloudFront控制台的「函数」页面,新建一个函数,填入如下示例代码(替换skip_cache_query为你实际要匹配的查询字符串名):
function handler(event) {
    var request = event.request;
    // 检查是否存在指定的查询字符串
    if (request.querystring['skip_cache_query']) {
        // 强制设置不缓存的头
        request.headers['cache-control'] = { value: 'no-cache, no-store, must-revalidate' };
        request.headers['pragma'] = { value: 'no-cache' };
    }
    return request;
}
  • 测试函数逻辑无误后,将函数关联到目标行为的查看器请求事件阶段
  • 同时确认源站返回的响应中,当存在指定查询字符串时也会返回Cache-Control: no-cache头,或者你也可以再关联一个函数到源响应阶段覆写缓存头

注意:配置修改后最长需要5分钟左右全球节点生效,生效后可以通过CloudFront响应头中的X-Cache字段验证是否命中缓存,出现Miss from cloudfront就是回源成功了。

内容的提问来源于stack exchange,提问作者tklodd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 16:36:01