Правило InvalidateCache

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

Настраивает, как кешированные значения должны удаляться из кеша.

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

Чтобы узнать, как кешировать ответы внутренних ресурсов, ознакомьтесь с правилами кеширования ответов.

Сведения об элементах

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

<InvalidateCache async="false" continueOnError="false" enabled="true" name="policy-name">
    <DisplayName>Policy Name</DisplayName>
    <CacheKey>
        <Prefix>prefix_string</Prefix>
        <KeyFragment ref="variable_reference"/>
        <KeyFragment>fragment_string</KeyFragment>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource>cache_to_use</CacheResource>
    <Scope>scope_enumeration</Scope>
    <CacheContext>
        <APIProxyName>application_that_added_the_entry</APIProxyName>
        <ProxyName>proxy_for_which_data_was_cached</ProxyName>
        <TargetName>endpoint_for_which_data_was_cached</TargetName>
    </CacheContext>
    <PurgeChildEntries>true_to_purge_all_child_entries</PurgeChildEntries>
</InvalidateCache>

Атрибуты <InvalidateCache>

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

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

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

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

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

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

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

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

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

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

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

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

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

Элемент <DisplayName>

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

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

Н/Д

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

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

Элемент <CacheContext>/<APIProxyName>

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

<APIProxyName>application_that_added_the_entry</APIProxyName>

Атрибуты

Атрибут Описание По умолчанию Тип поля Тип
ref Переменная с названием приложения. Н/Д Необязательно Строка

Элемент <CacheContext>

Указывает, как создать ключ кеша, если значение элемента Prefix не задано, или как очистить записи кеша, добавленные другим прокси-сервером API.

<CacheContext>
  <APIProxyName ref="variable_name">application_that_added_the_entry</APIProxyName>
  <TargetName ref="variable_name">endpoint_for_which_data_was_cached</TargetName>
  <ProxyName ref="variable_name">proxy_for_which_data_was_cached</ProxyName>
</CacheContext>

Используется для создания CacheKey. Значения для APIProxyName, ProxyName и TargetName обязательны, если для очистки записей кеша, добавленных другим прокси-сервером API, не используется префикс CacheKey (то есть пользовательский префикс).

Элемент <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>. Подробнее о работе с ключами кеша…

Элемент <CacheResource>

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

Если это правило (и соответствующие правила PopulateCache и LookupCache) использует встроенный общий кеш, этот элемент можно не указывать.

<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>. Подробнее о работе с ключами кеша…

Атрибуты

Атрибут Описание По умолчанию Тип поля Тип
ref Переменная, значение которой нужно получить. Не следует использовать, если этот элемент содержит литеральное значение. Н/Д Необязательно Строка

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

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

<Prefix>prefix_string</Prefix>

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

Н/Д

Присутствие

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

Тип:

Строка

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

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

Элемент <CacheContext>/<ProxyName>

Указывает название прокси-сервера, для которого были кешированы данные.

<ProxyName>proxy_for_which_data_was_cached</ProxyName>

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

Н/Д

Присутствие

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

Тип:

Строка

Атрибуты

Атрибут Описание По умолчанию Тип поля Тип
ref Переменная, значение которой нужно получить. Не следует использовать, если этот элемент содержит литеральное значение. Н/Д Необязательно Строка

Элемент <PurgeChildEntries>

true для удаления записей кеша, которые имеют значение, заданное элементом <KeyFragment>, настроенным для этого правила. Значения в других частях ключа кеша, например в элементах <Prefix>, не учитываются.

Обратите внимание, что элемент <KeyFragment> должен быть указан. Если это не так, установка значения true для правила <PurgeChildEntries> может привести к удалению всех записей в кеше.

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

<PurgeChildEntries>true_to_purge_child_entries</PurgeChildEntries>

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

false

Присутствие

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

Тип:

Логическое значение

Элемент <Scope>

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

<Scope>scope_enumeration</Scope>

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

"Эксклюзив"

Присутствие

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

Тип:

Строка

Настройка <Scope> определяет ключ кеша, который добавляется в начало в соответствии со значением <Scope>. Например, если область действия задана как Exclusive, ключ кеша будет иметь следующий вид:

orgName__envName__applicationName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ].

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

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

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

Значение области действия Описание
Global

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

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

Application

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

Ключ кеша добавляется в виде orgName__envName__applicationName.

Proxy

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

Ключ кеша добавляется в начале в следующем формате:orgName__envName__applicationName__deployedRevisionNumber__proxyEndpointName.

Target

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

Ключ кеша, добавленный в начале в формате orgName__envName__applicationName__deployedRevisionNumber__targetEndpointName .

Exclusive

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

Префикс может быть двух видов:

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

Ключ кеша, добавленный в виде orgName__envName__applicationName__deployedRevisionNumber__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

Элемент <CacheContext>/<TargetName>

Указывает название целевой конечной точки, для которой данные были сохранены в кеше.

<TargetName>endpoint_for_which_data_was_cached</TargetName>

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

Н/Д

Присутствие

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

Тип:

Строка

Атрибуты

Атрибут Описание По умолчанию Тип поля Тип
ref Переменная, значение которой нужно получить. Не следует использовать, если этот элемент содержит литеральное значение. Н/Д Необязательно Строка

Примечания

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

Подробнее о том, как создавать и изменять кеш среды… Подробнее о внутреннем хранилище данных…

Коды ошибок

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

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

Н/Д

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

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

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

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

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

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

Н/Д

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

Н/Д