Я добавил политики хранения кеша и поиска кеша в маршрут API, кеш сохраняется на срок, указанный в директиве max-age в заголовке Cache-Control. Вот политика:
<inbound>
<base />
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" must-revalidate="true" downstream-caching-type="public">
<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 />
<set-variable name="max-age" value="@{
var header = context.Response.Headers.GetValueOrDefault("Cache-Control","");
var maxAge = Regex.Match(header, @"max-age=(?<maxAge>\d+)").Groups["maxAge"]?.Value;
return (!string.IsNullOrEmpty(maxAge))?int.Parse(maxAge):0;
}" />
<choose>
<when condition="@((int)context.Variables["max-age"] > 0)">
<cache-store duration="@((int)context.Variables["max-age"])" />
</when>
</choose>
</outbound>
Я пытался часто вызывать маршрут, но в журналах запросов в Application Insights не вижу признаков того, что ответ был кэширован. customDimensions.Cache
всегда имеет значение «Нет».
РЕДАКТИРОВАТЬ: я протестировал кэширование, сделав относительно длительную кэш-память и сравнив число запросов, зарегистрированных на бэкэнде, но количество обращений к кэшу не определено c.