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

Kong proxy-cache插件开启cache_control时X-Cache-Status始终为Bypass问题求助

问题原因与排查方案

当Kong的proxy-cache插件开启cache_control: true时,插件会同时校验请求和上游响应的Cache-Control规则,出现固定Bypass可按以下步骤排查:

1. 优先查看Bypass原因标识

开启cache_control后,插件Bypass时会自动返回X-Cache-Bypass响应头说明具体原因,先给curl命令加-v参数读取完整响应头:

curl -v --location --request GET 'http://localhost:8000/echo' --header 'Cache-Control: public, max-age=20'

直接根据X-Cache-Bypass的取值定位问题,常见取值包括上游返回了不可缓存的Cache-Control标识、请求头校验不通过等。

2. 检查上游响应的Cache-Control配置

cache_control: true时,仅请求头符合规则不会触发缓存,必须同时满足上游返回的响应头符合可缓存要求:

  • 上游响应头不能包含no-cache、no-store、private取值
  • 上游响应头的max-age必须大于0
  • 不能返回Vary: *响应头

3. 修复插件执行顺序问题

如果使用request-transformer修改请求头,注意Kong插件执行优先级:数值越小执行越早。proxy-cache默认优先级为100,request-transformer默认优先级为800,默认配置下request-transformer修改的请求头无法被proxy-cache读取,会导致校验不通过触发Bypass。
需要调整request-transformer的优先级到99及以下,确保先修改请求头再执行缓存校验逻辑。

4. 校验配置文件语法

你提供的配置中response_code字段后缺少冒号,属于YAML语法错误,会导致该配置项不生效,正确写法为:

plugins:
- name: proxy-cache
  service: echo
  config: 
    response_code: # 此处必须加冒号
    - 200
    - 301
    - 404
    request_method:
    - GET
    - HEAD
    content_type:
    - text/plain
    - application/json
    - application/json; charset=utf-8
    - text/plain; charset=utf-8
    cache_ttl: 300
    strategy: memory
    cache_control: true
    memory:
      dictionary_name: kong_db_cache

修改配置后重载Kong配置生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:03