本文介绍:

APIM支持的两种缓存;

案例:配置APIM内置缓存并测试效果;

案例:配置APIM External 缓存并测试效果;

 

视频介绍:

图文介绍:

Azure API Management 支持两种缓存,一种是内置的缓存,一种是外部的缓存,外部的缓存支持Redis,可以直接使用Azure Cache for Redis。

内置的缓存根据APIM的SKU的不同,会有不同的缓存大小限制,具体见下表:

  消耗 开发人员 基本 标准 高级
缓存(每单位) 仅限外部 10 MB 50 MB 1 GB 5 GB
缓存,外部

 

 

案例1,配置内部缓存:

选择要添加缓存的API,点击如下图【2】所示,通过可视化界面增加缓存policy,或点击按钮【3】通过代码添加缓存policy:

Azure API Management(5)缓存_经验分享

 

如果通过可视化界面,则选择如下图 cache response:

 

Azure API Management(5)缓存_经验分享_02

 

关于配置界面的具体属性的解释,可参照官网:https://docs.microsoft.com/zh-cn/azure/api-management/api-management-caching-policies

本例中进行了如下配置:

 

Azure API Management(5)缓存_经验分享_03

如果使用代码进行配置,则代码如下:

<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>

 

测试内置缓存:

Azure API Management(5)缓存_经验分享_04

 

点击 Trace,点击Backend,如果Trace中有backend调用时间,则表示从真实的后端API获取的数据:

Azure API Management(5)缓存_经验分享_05

如下图,表示缓存未命中,调用了真实的后端API,调用过程时长为 683 ms

Azure API Management(5)缓存_经验分享_06

 

在Outbound中,将后端API的返回结果写入到了缓存中:

Azure API Management(5)缓存_经验分享_07

 

在缓存未失效(本例为20秒)内,再次测试api,则结果如下:

已经命中缓存,同时backend小节没有数据,表示并没有再次调用后端API:

Azure API Management(5)缓存_经验分享_08

同时整体的请求时间大大缩短:

Azure API Management(5)缓存_经验分享_09

 


 
案例2,配置外部缓存并测试

本例中我们使用 Azure Cache for Redis作为外部缓存:

创建 Azure Cache for Redis实例:

Azure API Management(5)缓存_经验分享_10

 

在APIM中配置外部缓存:

Azure API Management(5)缓存_经验分享_11

 

确保policy中的 caching type为external或者prefer external,其中 prefer external表示如果配置了外部缓存则优先使用外部缓存,否则使用内部缓存。

Azure API Management(5)缓存_经验分享_12

 

在缓存周期内连续两次调用API,在外部缓存中查看缓存结果:

Azure API Management(5)缓存_经验分享_13

在控制台中执行 keys *,可查看当前缓存的key:

Azure API Management(5)缓存_经验分享_14

 


Azure API Management(5)缓存_经验分享_15