Политика InvalidateCache

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

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

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

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

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

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

<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>

Атрибуты

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

элемент <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 являются обязательными, если префикс CacheKey (то есть пользовательский префикс) не используется для очистки записей кэша, добавленных другим API-прокси.

элемент <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> . Дополнительную информацию см. в разделе «Работа с ключами кэша» .

Атрибуты

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

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

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

<Prefix>prefix_string</Prefix>

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

Н/Д

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

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

Тип:

Нить

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

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

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

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

<ProxyName>proxy_for_which_data_was_cached</ProxyName>

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

Н/Д

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

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

Тип:

Нить

Атрибуты

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

<PurgeChildEntries> элемент

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

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

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

<PurgeChildEntries>true_to_purge_child_entries</PurgeChildEntries>

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

ЛОЖЬ

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

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

Тип:

Логический

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

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

<Scope>scope_enumeration</Scope>

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

«Эксклюзив»

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

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

Тип:

Нить

Параметр <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__ application Name .

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__ application Name__deployedRevisionNumber__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

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

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

<TargetName>endpoint_for_which_data_was_cached</TargetName>

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

Н/Д

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

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

Тип:

Нить

Атрибуты

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

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

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

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

коды ошибок

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

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

Н/Д

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

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

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

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

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

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

Н/Д

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

Н/Д