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

Jira插件ScriptRunner Escalation Service POST请求持续返回缓存响应问题咨询

问题解答

确认是否获取缓存响应的方法

  • 检查响应头缓存标识:调用conn.getHeaderFields()获取全部响应头,重点查看Age、X-Cache、Cache-Control字段,若存在Age且数值大于0,或X-Cache返回HIT类标识,即可判定为缓存响应。
  • 比对重复请求的响应特征:连续发送2次完全相同参数的POST请求,若返回内容不同但Date响应头完全一致,可判定为拿到了缓存内容。
  • 添加扰动参数测试:在POST参数中追加一个无业务含义的_t参数,值为当前毫秒级时间戳,若修改参数后返回结果和JS调用结果一致,即可确认之前的异常结果由缓存导致。

避免获取缓存响应的配置方案

你当前代码中已设置conn.setUseCaches(false),该配置仅禁用了JVM层面的HttpURLConnection本地缓存,还需补充以下配置覆盖中间节点、服务端的缓存规则:

// 在原有请求头配置后追加以下缓存禁用头
conn.setRequestProperty("Cache-Control", "no-cache, no-store, must-revalidate");
conn.setRequestProperty("Pragma", "no-cache");
conn.setRequestProperty("Expires", "0");

如果允许调整请求参数,可固定追加上述提到的随机时间戳扰动参数,从请求特征层面规避所有缓存匹配规则。

JS调用未命中缓存的原因

通常由以下两种场景导致:

  • 浏览器端JS发起请求时,会默认携带浏览器规范要求的缓存控制头,部分浏览器默认会给POST请求添加no-cache类规则,和你Groovy代码的默认请求头配置不同,因此未触发缓存匹配。
  • 服务端缓存策略按请求全量特征匹配,JS请求携带的User-Agent、Origin、Cookie等头字段和Groovy请求不一致,未命中缓存规则,因此直接返回了最新的业务结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:57:01