Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API
Политика cache-lookup используется для поиска в кэше и возврата допустимого кэшированного ответа при его наличии. Эту политику можно применять в тех случаях, когда содержимое ответа остается неизменным в течение определенного интервала времени. Кэширование ответов уменьшает требования к пропускной способности и вычислительной мощности, накладываемые на внутренний веб-сервер, а также снижает время задержки для потребителей API.
Примечание.
Одновременно с этой политикой должна быть определена соответствующая политика сохранения в кэш.
Внимание
Встроенный кэш является непостоянным и совместно используется всеми единицами одного региона в той же службе Управления API.
Примечание.
Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Чтобы помочь вам настроить эту политику, портал предоставляет интерактивный редактор на основе форм. Узнайте, как устанавливать или изменять политики службы управления API.
Правило политики
<cache-lookup vary-by-developer="true | false" vary-by-developer-groups="true | false" caching-type="prefer-external | external | internal" downstream-caching-type="none | private | public" must-revalidate="true | false" allow-private-response-caching="@(expression to evaluate)">
<vary-by-header>Accept</vary-by-header>
<!-- should be present in most cases -->
<vary-by-header>Accept-Charset</vary-by-header>
<!-- should be present in most cases -->
<vary-by-header>Authorization</vary-by-header>
<!-- should be present when allow-private-response-caching is "true"-->
<vary-by-header>header name</vary-by-header>
<!-- optional, can be repeated -->
<vary-by-query-parameter>parameter name</vary-by-query-parameter>
<!-- optional, can be repeated -->
</cache-lookup>
Атрибуты
| Атрибут | Описание | Обязательное поле | По умолчанию. |
|---|---|---|---|
| allow-private-response-caching | Если задано значение true, разрешается кэширование запросов, содержащих заголовок авторизации. Допустимы выражения политики. |
нет | false |
| тип кэширования | Выберите одно из следующих значений атрибута: - internalдля использования встроенного кэша Управление API,- external для использования внешнего кэша, как описано в разделе "Использование внешнего кэша, совместимого с Redis" в службе управления API Azure,- prefer-external — использование внешнего кэша, если он настроен. В противном случае используется внутренний кэш.Выражения политики не допускаются. |
нет | prefer-external |
| подчиненный тип кэширования | Для этого атрибута следует указать одно из таких значений: - none — нисходящее кэширование не разрешено; - private — разрешено нисходящее частное кэширование; - public — разрешено частное и совместно используемое нисходящее кэширование. Допустимы выражения политики. |
нет | ничего |
| необходимо повторно проверять | Если включено нисходящее кэширование, этот атрибут включает или отключает директиву управления кэшем must-revalidate в ответах шлюза. Допустимы выражения политики. |
нет | true |
| разработчик с различными разными разными способами | Задайте значение true, чтобы кэшировать ответы по учетной записи разработчика, которой принадлежит ключ подписки, входящий в запрос. Допустимы выражения политики. |
Да | false |
| различные группы разработчиков | Установите значение true, если нужно кэшировать ответы в зависимости от группы пользователя. Допустимы выражения политики. |
Да | false |
Элементы
| Имя | Описание | Обязательное поле |
|---|---|---|
| разными заголовками | Добавьте один или несколько этих элементов, чтобы начать кэширование ответов на значение указанного заголовка, например Accept, , Accept-CharsetAccept-EncodingAccept-LanguageAuthorizationExpectFromHost. If-Match |
нет |
| параметр vary-by-query | Добавьте один или несколько этих элементов, чтобы начать кэширование ответов на значение указанных параметров запроса. Введите один или несколько параметров. В качестве разделителя используйте точку с запятой. | нет |
Использование
- Разделы политики: inbound.
- Области политики: глобальная, рабочая область, продукт, API, операция
- Шлюзы: классическая, версия 2, потребление, локальное размещение, рабочая область
Примечания об использовании
- Управление API выполняет поиск кэша только для HTTP-запросов GET.
- При использовании
vary-by-query-parameterможет потребоваться объявить параметры в шаблоне перезаписи URI или задать для атрибутаcopy-unmatched-paramsзначениеfalse. Деактивируя этот флаг, параметры, которые не объявлены, отправляются в серверную часть.
- Эту политику можно использовать только один раз в разделе политики.
- Эта политика не поддерживается внутри фрагмента политики.
- Мы рекомендуем настроить политику ограничения скорости (или политику ограничения скорости по ключу ) сразу после поиска кэша. Это помогает сохранить серверную службу от перегрузки, если кэш недоступен.
Примеры
Пример с соответствующей политикой хранилища кэша
В этом примере показано, как использовать cache-store политику вместе с политикой cache-lookup для кэширования ответов в встроенном кэше управления API.
Примечание.
Добавьте политику ограничения скорости (или политику ограничения скорости по ключу ) после поиска кэша, чтобы ограничить количество вызовов и предотвратить перегрузку серверной службы в случае, если кэш недоступен.
<policies>
<inbound>
<base />
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none" must-revalidate="true" caching-type="internal" >
<vary-by-query-parameter>version</vary-by-query-parameter>
</cache-lookup>
<rate-limit calls="10" renewal-period="60" />
</inbound>
<outbound>
<cache-store duration="seconds" />
<base />
</outbound>
</policies>
Пример с использованием выражений политики
В этом примере показано, как настроить в службе управления API период хранения ответов в кэше, соответствующий длительности кэширования ответа в серверной службе, которая задается директивой Cache-Control.
<!-- The following cache policy snippets demonstrate how to control API Management response cache duration with Cache-Control headers sent by the backend service. -->
<!-- Copy this snippet into the inbound section -->
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="public" must-revalidate="true" >
<vary-by-header>Accept</vary-by-header>
<vary-by-header>Accept-Charset</vary-by-header>
</cache-lookup>
<rate-limit calls="10" renewal-period="60" />
<!-- Copy this snippet into the outbound section. Note that cache duration is set to the max-age value provided in the Cache-Control header received from the backend service or to the default value of 5 min if none is found -->
<cache-store duration="@{
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):300; }" />
Чтобы узнать больше, см. статью API Management policy expressions (Выражения политики управления API) и раздел Context variable (Переменная контекста).
Связанные политики
Связанный контент
Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.
- Руководство. Преобразование и защита API
- Полный перечень операторов политик и их параметров см. в справочнике по политикам.
- Выражения политики
- Настройка или изменение политик
- Повторное использование конфигураций политик
- Репозиторий фрагментов политик
- репозиторий Policy
- Набор средств политики Управление API Azure
- Получите помощь Copilot для создания, объяснения и устранения неполадок в политике