本文是APIM系列的一部分,完整内容参见:
- (视频)Azure API Management(1)创建Azure APIM并添加后端API
- (视频)Azure API Management(2)创建 Product/User/Subscription/体验Developer Portal
- (视频)Azure API Management(3)体验APIM Policy-流控/隐藏后端api url/修改response header
- (视频)Azure API Management(4)体验APIM 版本管理
- (视频)Azure API Management(5)缓存
- (视频)Azure API Management(6)Validate JWT Token
本文介绍:
APIM支持的两种缓存;
案例:配置APIM内置缓存并测试效果;
案例:配置APIM External 缓存并测试效果;
This article describe:
2 kinds of cache in Azure API Management:
demo: config internal cache in apim and test;
demo: config external cache (Redis ) in apim and test.
视频介绍:
图文介绍:
Azure API Management 支持两种缓存,一种是内置的缓存,一种是外部的缓存,外部的缓存支持Redis,可以直接使用Azure Cache for Redis。
内置的缓存根据APIM的SKU的不同,会有不同的缓存大小限制,具体见下表:
消耗 | 开发人员 | 基本 | 标准 | 高级 | |
---|---|---|---|---|---|
缓存(每单位) | 仅限外部 | 10 MB | 50 MB | 1 GB | 5 GB |
缓存,外部 | 是 | 是 | 是 | 是 | 是 |
案例1,配置内部缓存:
选择要添加缓存的API,点击如下图【2】所示,通过可视化界面增加缓存policy,或点击按钮【3】通过代码添加缓存policy:
如果通过可视化界面,则选择如下图 cache response:
关于配置界面的具体属性的解释,可参照官网:https://docs.microsoft.com/zh-cn/azure/api-management/api-management-caching-policies
本例中进行了如下配置:
如果使用代码进行配置,则代码如下:
<policies>
<inbound>
<base />
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none">
<vary-by-header>Accept</vary-by-header>
<vary-by-header>Accept-Charset</vary-by-header>
<vary-by-header>Authorization</vary-by-header>
</cache-lookup>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
<cache-store duration="20" />
</outbound>
<on-error>
<base />
</on-error>
</policies>
测试内置缓存:
点击 Trace,点击Backend,如果Trace中有backend调用时间,则表示从真实的后端API获取的数据:
如下图,表示缓存未命中,调用了真实的后端API,调用过程时长为 683 ms
在Outbound中,将后端API的返回结果写入到了缓存中:
在缓存未失效(本例为20秒)内,再次测试api,则结果如下:
已经命中缓存,同时backend小节没有数据,表示并没有再次调用后端API:
同时整体的请求时间大大缩短:
案例2,配置外部缓存并测试
本例中我们使用 Azure Cache for Redis作为外部缓存:
创建 Azure Cache for Redis实例:
在APIM中配置外部缓存:
确保policy中的 caching type为external或者prefer external,其中 prefer external表示如果配置了外部缓存则优先使用外部缓存,否则使用内部缓存。
在缓存周期内连续两次调用API,在外部缓存中查看缓存结果:
在控制台中执行 keys *,可查看当前缓存的key: