我当前正在使用请求的路径作为缓存键来缓存操作的响应。路径使用路由参数,这是使用该路由分隔符更改缓存项的最简单方法。
商店对账单
<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/*的所有缓存项?
简短回答:没有办法一次只针对缓存项的这一子集
对于内部缓存-如果,缓存将被清除
- 您对策略进行任何更改(这将清除所有条目(
- 缓存移除值策略(您需要知道缓存密钥(
- TTL。。。。(生存时间(到期
- 任何更新/重新启动(这将清除所有条目(
更新
您可以尝试在重试策略中混合使用缓存删除策略和策略表达式,以增加存储在变量中的计数器。https://learn.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#Retry