Политика LookupCache

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Настраивает способ извлечения кэшированных значений во время выполнения.

Эта политика предназначена для использования в краткосрочном кэшировании общего назначения. Он используется в сочетании с политикой заполнения кэша (для записи записей) и политикой недействительности кэша (для признания записей недействительными).

Для кэширования ответов серверных ресурсов смотрите политику Response Cache .

Ссылка на элемент

Ниже перечислены элементы, которые можно настроить в этой политике.

<LookupCache async="false" continueOnError="false" enabled="true" name="Lookup-Cache-1">
    <DisplayName>Lookup Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <CacheLookupTimeoutInSeconds/>
    <Scope>Exclusive</Scope>
    <AssignTo>flowVar</AssignTo>
</LookupCache>

Общий кеш включен по умолчанию. Чтобы использовать общий кэш, опустите элемент <CacheResource> в этой конфигурации политики.

Дополнительные сведения о базовом хранилище данных см. в разделе Внутреннее устройство кэша . Дополнительные сведения о настройке кэшей см. в разделе Создание и редактирование кэша среды .

Атрибуты <LookupCache>

В следующей таблице описаны атрибуты, общие для всех родительских элементов политики:

Атрибут Описание По умолчанию Присутствие
name

Внутреннее имя политики. Значение атрибута name может содержать буквы, цифры, пробелы, дефисы, подчеркивания и точки. Это значение не может превышать 255 символов.

При необходимости используйте элемент <DisplayName> , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

Н/Д Необходимый
continueOnError

Установите значение false , чтобы возвращать ошибку в случае сбоя политики. Это ожидаемое поведение для большинства политик.

Установите значение true , чтобы выполнение потока продолжалось даже после сбоя политики.

ЛОЖЬ Необязательный
enabled

Установите значение true , чтобы обеспечить соблюдение политики.

Установите значение false , чтобы отключить политику. Политика не будет применена, даже если она останется привязанной к потоку.

истинный Необязательный
async

Этот атрибут устарел.

ЛОЖЬ Устарело

Элемент <DisplayName>

Используйте в дополнение к атрибуту name , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

<DisplayName>Policy Display Name</DisplayName>
По умолчанию

Н/Д

Если вы опустите этот элемент, будет использовано значение атрибута name политики.

Присутствие Необязательный
Тип Нить

Элемент <AssignTo>

Указывает переменную, которой назначается запись кэша после ее извлечения из кэша. Переменная должна быть доступна для записи. Если поиск в кэше не возвращает значение, переменная не будет установлена.

<AssignTo>variable_to_receive_cached_value</AssignTo>

По умолчанию:

Н/Д

Присутствие:

Необходимый

Тип:

Нить

Элемент <CacheKey>

Настраивает уникальный указатель на фрагмент данных, хранящихся в кеше.

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

По умолчанию:

Н/Д

Присутствие:

Необходимый

Тип:

Н/Д

<CacheKey> создает имя каждого фрагмента данных, хранящихся в кэше.

Во время выполнения к значениям <KeyFragment> добавляется либо значение элемента <Scope> , либо значение <Prefix> . Например, следующее приводит к получению ключа кэша UserToken__apiAccessToken__ < value_of_client_id> :

<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>

Вы используете элемент <CacheKey> в сочетании с <Prefix> и <Scope> . Дополнительную информацию см. в разделе Работа с ключами кэша .

Элемент <CacheLookupTimeoutInSeconds>

Указывает количество секунд, по истечении которых неудачный поиск в кэше будет считаться промахом в кэше. Если это происходит, поток возобновляется по пути кэш-промаха.

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

По умолчанию:

30

Присутствие:

Необязательный

Тип:

Целое число

Элемент <CacheResource>

Указывает кеш, в котором должны храниться сообщения.

Полностью опустите этот элемент, если эта политика (и соответствующие политики PopulateCache и InvalidateCache) используют включенный общий кеш.

<CacheResource>cache_to_use</CacheResource>

По умолчанию:

Н/Д

Присутствие:

Необязательный

Тип:

Нить

Дополнительные сведения о настройке кэшей см. в разделе Создание и редактирование кэша среды .

Элемент <CacheKey>/<KeyFragment>

Указывает значение, которое должно быть включено в ключ кэша, создавая пространство имен для сопоставления запросов с кэшированными ответами.

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

По умолчанию:

Н/Д

Присутствие:

Необязательный

Тип:

Н/Д

Это может быть ключ (статическое имя, которое вы предоставляете) или значение (динамическая запись, заданная путем ссылки на переменную). Все указанные фрагменты (плюс префикс) объединяются для создания ключа кэша.

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

Вы используете элемент <KeyFragment> в сочетании с <Prefix> и <Scope> . Дополнительную информацию см. в разделе Работа с ключами кэша .

Атрибуты

Атрибут Тип По умолчанию Необходимый Описание
ссылка нить Нет

Переменная, из которой можно получить значение. Не следует использовать, если этот элемент содержит буквальное значение.

Элемент <CacheKey>/<Prefix>

Указывает значение, которое будет использоваться в качестве префикса ключа кэша.

<Prefix>prefix_string</Prefix>

По умолчанию:

Н/Д

Присутствие:

Необязательный

Тип:

Нить

Используйте это значение вместо <Scope> если вы хотите указать свое собственное значение, а не значение, перечисляемое <Scope> . Если определено, <Prefix> добавляет значение ключа кэша к записям, записываемым в кэш. Значение элемента <Prefix> переопределяет значение элемента <Scope> .

Вы используете элемент <Prefix> в сочетании с <CacheKey> и <Scope> . Дополнительную информацию см. в разделе Работа с ключами кэша .

Элемент <Область>

Перечисление, используемое для создания префикса для ключа кэша, когда элемент <Prefix> не указан в элементе <CacheKey> .

<Scope>scope_enumeration</Scope>

По умолчанию:

«Эксклюзивный»

Присутствие:

Необязательный

Тип:

Нить

Параметр <Scope> определяет ключ кэша, который добавляется в начало в соответствии со значением <Scope> . Например, ключ кэша будет иметь следующую форму, если для области установлено Exclusive : orgName__envName__ application Name__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ].

Если элемент <Prefix> присутствует в <CacheKey> , он заменяет значение элемента <Scope> . Допустимые значения включают перечисления ниже.

Вы используете элемент <Scope> в сочетании с <CacheKey> и <Prefix> . Дополнительную информацию см. в разделе Работа с ключами кэша .

Допустимые значения

Global

Ключ кэша используется всеми прокси-серверами API, развернутыми в среде. Ключ кэша добавляется в форме orgName __ envName __.

Если вы определяете запись <CacheKey> с помощью <KeyFragment> apiAccessToken и области <Global> , каждая запись сохраняется как orgName__envName__apiAccessToken , за которой следует сериализованное значение токена доступа. Для прокси-сервера API, развернутого в среде под названием «test» в организации под названием «apifactory», токены доступа будут храниться под следующим ключом кэша: apifactory__test__apiAccessToken .

Application

Имя прокси-сервера API используется в качестве префикса.

Ключ кэша добавляется в форме orgName__envName__ Имя приложения .

Proxy

В качестве префикса используется конфигурация ProxyEndpoint.

Ключ кэша добавляется в форме orgName__envName__ application Name__deployedRevisionNumber__proxyEndpointName .

Target

В качестве префикса используется конфигурация TargetEndpoint.

Ключ кэша добавляется в форме orgName__envName__ application Name__deployedRevisionNumber__targetEndpointName .

Exclusive

По умолчанию. Это наиболее специфичный вариант, поэтому он представляет минимальный риск конфликтов пространств имен внутри данного кэша.

Префикс имеет одну из двух форм:

  • Если политика прикреплена к потоку ProxyEndpoint , префикс имеет форму ApiProxyName_ProxyEndpointName .
  • Если политика прикреплена к TargetEndpoint , префикс имеет форму ApiProxyName_TargetName .

Ключ кэша добавляется в форме orgName__envName__ Имя приложения__deployedRevisionNumber__proxyNameITargetName

Например, полная строка может выглядеть так:

apifactory__test__weatherapi__16__default__apiAccessToken
.

Примечания по использованию

Используйте эту политику для кэширования общего назначения. Во время выполнения политика LookupCache извлекает значение из кэша, присваивая значение переменной, указанной вами с помощью элемента AssignTo (если значение не получено, переменная не будет установлена). Он ищет значение на основе ключа кэша, созданного посредством конфигурации, объединяющей элементы CacheKey и Scope. Другими словами, чтобы получить определенное значение, добавленное в кэш политикой PopulateCache, ваша политика LookupCache должна иметь элементы, связанные с ключом кэша, настроенные таким же образом, как и политика PopulateCache.

Кэширование общего назначения с помощью политики заполнения кэша , политики LookupCache и политики InvalidateCache использует либо настроенный вами кеш, либо общий кеш, включенный по умолчанию. В большинстве случаев базовый общий кэш должен соответствовать вашим потребностям. Чтобы использовать кэш по умолчанию, просто опустите элемент <CacheResource> .

Дополнительные сведения о настройке кэшей см. в разделе Создание и редактирование кэша среды . Дополнительные сведения о базовом хранилище данных см. в разделе Внутреннее устройство кэша .

Переменные потока

Переменные потока можно использовать для настройки динамического поведения политик и потоков во время выполнения на основе заголовков HTTP или содержимого сообщения или контекста, доступного в потоке. Дополнительные сведения о переменных потока см. в разделе Справочник по переменным .

Следующие предопределенные переменные потока доступны после настройки поведения кэша, определенного в политике LookupCache.

Переменные Тип Разрешение Описание
Lookupcache.{имя-политики}.cachename Нить Только чтение Возвращает имя кэша, используемое в политике.
Lookupcache.{имя-политики}.cachekey Нить Только чтение Возвращает используемый ключ.
Lookupcache.{имя-политики}.cachehit логическое значение Только для чтения Истинно, если политика обнаружила значение для указанного ключа кэша.
Lookupcache.{имя-политики}.assignto Нить Только для чтения Возвращает переменную, которой назначен кэш.

Коды ошибок

В этом разделе описаны сообщения об ошибках и переменные потока, которые задаются, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила сбоев для прокси. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .

Префикс кода ошибки

Н/Д

Ошибки выполнения

Эта политика не вызывает никаких ошибок во время выполнения.

Ошибки развертывания

Эти ошибки могут возникнуть при развертывании прокси-сервера, содержащего эту политику.

Название ошибки Причина Исправить
InvalidCacheResourceReference Эта ошибка возникает, если для элемента <CacheResource> установлено имя, которое не существует в среде, где развертывается прокси-сервер API.
InvalidTimeout Если для элемента <CacheLookupTimeoutInSeconds> установлено отрицательное число, развертывание прокси-сервера API завершается неудачей.
CacheNotFound Эта ошибка возникает, если конкретный кэш, упомянутый в сообщении об ошибке, не был создан в определенном компоненте процессора сообщений.

Переменные неисправности

Н/Д

Пример ответа об ошибке

Н/Д