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

Azure APIM如何基于相同查询参数配置2分钟响应缓存

Azure APIM 按查询参数匹配缓存GET接口响应配置方法

只配置outbound节点的cache-store仅能实现响应写入缓存的逻辑,缓存命中校验、按参数生成唯一缓存键的逻辑需要在inbound节点通过cache-lookup策略实现,具体配置要点如下:

  • 缓存总时长2分钟对应配置值为120秒,cache-lookup和cache-store的duration参数要保持一致
  • 在cache-lookup节点内通过vary-by-query-parameter明确指定参与缓存匹配的查询参数,这里填接口的productCode和PurchasedDate两个字段,避免无关查询参数(比如traceId这类随机传参)干扰缓存命中
  • 由于PurchasedDate是DateTime类型,客户端传参可能存在格式差异(比如时区标识不一致、日期分隔符不同),需要在缓存查找前统一该参数的格式,避免逻辑上的同个请求因为格式问题无法命中缓存

完整可直接使用的策略配置如下:

<policies>
    <inbound>
        <base />
        <!-- 统一日期参数格式,消除格式差异导致的缓存匹配失败问题 -->
        <set-query-parameter name="PurchasedDate" exists-action="override">
            <value>@(DateTime.Parse(context.Request.Url.Query.GetValueOrDefault("PurchasedDate")).ToString("yyyy-MM-ddTHH:mm:ss"))</value>
        </set-query-parameter>
        <!-- 缓存查找规则:仅按指定两个查询参数生成缓存键 -->
        <cache-lookup 
            vary-by-developer="false" 
            vary-by-developer-groups="false" 
            allow-private-response-caching="false" 
            duration="120">
            <vary-by-query-parameter>productCode</vary-by-query-parameter>
            <vary-by-query-parameter>PurchasedDate</vary-by-query-parameter>
        </cache-lookup>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
        <!-- 响应写入缓存,有效期120秒即2分钟 -->
        <cache-store duration="120" />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

补充说明:如果后续需要让所有传入的查询参数都参与缓存匹配,不需要逐个列参数名,直接把vary-by-query-parameter的取值设为*即可。当前场景显式指定两个参数是最稳妥的方案,不会被随机传入的无关参数影响缓存命中率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:18:21