Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
При использовании правил кеширования уникальность ключей кешированных значений обеспечивается путем настройки ключей кеша. Ключ кеша и другие настраиваемые значения позволяют надежно получать те же данные, которые были добавлены. Ключи кеша используются в правилах заполнения кеша, правилах поиска в кеше, правилах аннулирования кеша и правилах кеширования ответов.
Значения элементов конфигурации <CacheKey>/<KeyFragment>, <Scope> и <Prefix> объединяются, чтобы создать идентификатор, связанный со значением, которое вы помещаете в кеш. Вы используете ту же конфигурацию, чтобы получить значение.
Ключ кеша можно создать с помощью следующих элементов конфигурации правил кеширования:
| Элемент конфигурации кеша | Описание |
|---|---|
<CacheKey>/<KeyFragment> |
Используйте элементы <CacheKey> и <KeyFragment> вместе, чтобы задать уникальный идентификатор для записей в кеше. Значения KeyFragment могут быть статическими литералами или задаваться с помощью переменных. |
<Scope> или <Prefix> |
Используйте элементы <Scope> или <Prefix>, чтобы задать пространство имен для ключей кеша. <Scope> содержит список заранее определенных значений.
Элемент <Prefix> переопределяет элемент <Scope> с помощью значения, которое вы выберете. |
Эти значения объединяются в следующем формате: значения атрибутов <Scope> или <Prefix> отделяются от значений KeyFragment двойным подчеркиванием.
Несколько значений KeyFragment также разделяются двойным подчеркиванием.
scope | prefix__keyfragment[__keyfragment]
С помощью правила кеширования ответов вы можете добавить к этому ключу кеша значения из заголовка Accept ответа.
Использование тега <CacheKey>
Элемент <CacheKey> определяет, как Edge будет создавать уникальный идентификатор (ключ) для каждой записи в кеше. Когда Edge извлекает кешированное значение, он использует ключ кеша, чтобы найти нужное значение. В правиле ResponseCache одна конфигурация определяет ключ для кеширования и извлечения. В правилах PopulateCache и LookupCache каждый элемент <CacheKey> должен быть идентичным, чтобы извлеченное из кеша значение соответствовало помещенному туда значению.
Элемент <CacheKey> может включать несколько элементов <KeyFragment>. Во время выполнения значения, указанные в элементах <KeyFragment>, объединяются с двумя символами подчеркивания между ними, чтобы составить часть ключа кеша.
Например, следующая конфигурация создает значение hello__world для использования в ключе кеша:
<CacheKey>
<KeyFragment>hello</KeyFragment>
<KeyFragment>world</KeyFragment>
<CacheKey>Вы также можете использовать значения переменных в ключе кеша, указав переменную в элементе <KeyFragment>, как показано ниже:
<KeyFragment ref="variable_name"/>
Например, чтобы значение ключа кеша включало тип контента запроса, выполните следующие действия:
<KeyFragment ref="request.header.Content-Type"/>
В приведенной ниже конфигурации переменная request.header.Content-Type имеет значение application/json.
<CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.header.Content-Type" /> <KeyFragment>bar</KeyFragment> </CacheKey>
В результате будет создан ключ кеша, заканчивающийся на apiAccessToken__application/json__bar.
Список доступных переменных приведен в справочнике по переменным.
Ключи кеша, полученные из параметров запроса
Используя переменные, такие как request.queryparam.<queryparam_name> и request.querystring, вы можете настроить ключ кеша так, чтобы он включал части строки запроса. Например, в следующем URL используются два параметра запроса (param1 и param2), которые можно использовать в ключе кеша:
http://myaccount.apigee.net/mydata?param1=value1¶m2=value2
В элемент <CacheKey> можно добавить эти значения с помощью следующей конфигурации:
<CacheKey>
<KeyFragment ref="request.queryparam.param1" />
<KeyFragment ref="request.queryparam.param2" />
<CacheKey>Во время выполнения ключ кеша будет включать объединенные значения параметров, как показано ниже:
other_key_parts__value1__value2
Помните, что при использовании переменных для вставки значений из параметров значения будут объединены в том порядке, в котором указаны элементы <KeyFragment>. Кроме того, обратите внимание, что Edge будет использовать только те значения, на которые вы ссылаетесь с помощью элементов <KeyFragment>. Если параметры запроса в ваших запросах различаются, эти различия не будут учитываться в ключе кеша.
В качестве альтернативы можно использовать переменную request.querystring, которая вставляет всю строку параметров буквально как часть ключа кеша. Обратите внимание, что, хотя этот метод учитывает все параметры, если порядок параметров в разных запросах будет отличаться, ключ будет разным. Другими словами, param1=value1¶m2=value2 и param2=value2¶m1=value1 не приводят к одному и тому же значению ключа кеша.
Список доступных переменных приведен в справочнике по переменным.
Как использовать теги <Scope> и <Prefix>
Элементы <Scope> и <Prefix> позволяют дополнить ключ префиксом пространства имен. Значения, которые они представляют, добавляются в начало ключа кеша.
По умолчанию используется элемент <Scope>. Это перечисление, значения которого варьируются от широких до узких. По умолчанию используется узкое значение. Это значение по умолчанию используется, если вы не зададите другое значение или не укажете значение элемента <Prefix>. Вы можете переопределить значение <Scope>, используя элемент <Prefix>, и таким образом указать собственное значение для пространства имен.
Например, значение <Scope> "Глобальный" (наиболее широкий диапазон) представляет название организации и среды. Если ваш прокси-сервер развернут в организации mycompany и среде prod, то в результате будет добавлено следующее значение:
| Конфигурация | Результат |
|---|---|
<Scope>Global</Scope> |
mycompany__prod__. |
Если вы используете глобальную область действия с ключом кеша, определенным выше, результат будет следующим:
| Конфигурация | Результат |
|---|---|
<Scope>Global</Scope>
<CacheKey>
<KeyFragment>hello</KeyFragment>
<KeyFragment>world</KeyFragment>
<CacheKey> |
mycompany__prod__hello__world. |
Как описано в правиле LookupCache, область действия можно настроить так, чтобы она была более конкретной – от глобальной до эксклюзивной. Область действия "Исключительная" является самой узкой и поэтому представляет минимальный риск конфликта пространств имен в рамках определенного кеша. Каждая запись кеша с областью действия "Эксклюзивная" имеет следующий префикс:
orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]
Например, ключ кеша, созданный с помощью значения "Исключительно" для <Scope>, будет выглядеть следующим образом:
apifactory__test__weatherapi__16__default__apiAccessToken