Как проверить политику кэширования в Azure Api Management - PullRequest
0 голосов
/ 28 апреля 2020

Я добавил политики хранения кеша и поиска кеша в маршрут 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.

...