Azure API管理-使用通配符删除缓存项



我当前正在使用请求的路径作为缓存键来缓存操作的响应。路径使用路由参数,这是使用该路由分隔符更改缓存项的最简单方法。

商店对账单

<cache-store-value key="@(context.Request.Url.Path)" value="@(context.Response.Body.As<String>(preserveContent: true))" duration="86400" />

从缓存中获取

<cache-lookup-value key="@(context.Request.Url.Path)" variable-name="cachedResponse" />

我正试图找到一种方法,在不使用路由参数的情况下清除任何具有此路径的缓存项。

示例:

缓存使用密钥存储:

/getsomething/1
/getsomething/2
/getsomething/3

如何清除键为/getsomething/*的所有缓存项?

简短回答:没有办法一次只针对缓存项的这一子集

对于内部缓存-如果,缓存将被清除

  1. 您对策略进行任何更改(这将清除所有条目(
  2. 缓存移除值策略(您需要知道缓存密钥(
  3. TTL。。。。(生存时间(到期
  4. 任何更新/重新启动(这将清除所有条目(

更新

您可以尝试在重试策略中混合使用缓存删除策略和策略表达式,以增加存储在变量中的计数器。https://learn.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#Retry

最新更新