如何禁用Azure API Management缓存,确保从数据库获取数据
解决Azure API Management开发者版未配置缓存但仍返回缓存数据的问题
检查API全局缓存设置
进入你的APIM实例,找到目标API,点开「设置」标签,查看「缓存」区域——开发者版默认不会开全局缓存,但还是要确认下,如果开启了直接关掉就行。排查GET操作的缓存策略
找到那个GET方法,进入「设计」标签,切换到「缓存」选项卡,看看有没有遗留的<cache-lookup>或<cache-store>策略代码,有的话直接删掉。处理后端响应头导致的缓存
有时候后端服务返回的Cache-Control头会让APIM自动缓存数据,你可以在APIM的入站策略里加一段强制禁用缓存的规则:<set-header name="Cache-Control" exists-action="override"> <value>no-cache, no-store, must-revalidate</value> </set-header> <set-header name="Pragma" exists-action="override"> <value>no-cache</value> </set-header> <set-header name="Expires" exists-action="override"> <value>0</value> </set-header>清除现有缓存数据
就算关了缓存,已经存的旧数据可能还会返回,手动清一下:- 进APIM实例的「缓存」菜单,选对应的缓存点「清除」
- 或者用Azure CLI跑命令:
az apim cache clear --resource-group <你的资源组名> --service-name <你的APIM实例名> --cache-id default
验证效果
修改数据库里的测试数据,再调用GET接口,确认返回的是最新数据;同时看响应头,确保Cache-Control这类头已经是禁用缓存的参数。
内容的提问来源于stack exchange,提问作者Mahendra A
相关产品推荐
相关产品推荐

