Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
При использовании политик кэширования вы обеспечиваете уникальность ключей кэшированных значений путем настройки ключей кэша. Ключ кэша, наряду с другими настраиваемыми значениями, обеспечивает надежный способ получения тех же данных, которые вы в него ввели. Ключи кэша используются с политиками Populate Cache , LookupCache , InvalidateCache и Response Cache .
Значения элементов конфигурации — <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"/>
Например, чтобы значение ключа кэша включало Content-Type сообщения запроса, необходимо выполнить следующие действия:
<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>Во время выполнения программы ключ кэша будет включать в себя объединенные значения параметров, как показано ниже:
другие_ключевые_части __значение1__значение2
Имейте в виду, что при использовании переменных для вставки значений из параметров, значения будут объединены в порядке, предложенном порядком элементов <KeyFragment> . Также обратите внимание, что Edge будет использовать только те значения, на которые вы специально ссылаетесь с помощью элементов <KeyFragment> . Если списки параметров запроса различаются, эти различия не будут учитываться в ключе кэша.
Альтернативный вариант — использовать переменную request.querystring, которая вставляет всю строку параметров буквально как часть ключа кэша. Имейте в виду, что хотя этот метод учитывает все параметры, если порядок параметров меняется от одного запроса к другому, то ключ будет другим. Другими словами, param1=value1¶m2=value2 и param2=value2¶m1=value1 не приведут к одному и тому же значению ключа кэша.
Список используемых переменных см. в справочнике по переменным .
Использование <Scope> и <Prefix>
Элементы <Scope> и <Prefix> позволяют дополнить ключ префиксом пространства имен. Значения, которые они представляют, добавляются в начало ключа кэша.
Элемент <Scope> используется по умолчанию. Это перечисление, значения которого варьируются от широкого до узкого, при этом самое узкое значение является значением по умолчанию. Это значение по умолчанию используется, если вы не укажете другое значение или значение элемента <Prefix> . Вы можете переопределить значение <Scope> , используя элемент <Prefix> , и таким образом указать пользовательское значение для пространства имен.
Например, значение параметра <Scope> "Global" — самая широкая область видимости — представляет собой название организации и среды. Таким образом, если ваш прокси-сервер развернут в организации с именем "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]
Например, ключ кэша, созданный с использованием значения Exclusive для <Scope> , будет выглядеть следующим образом:
apifactory__test__weatherapi__16__default__apiAccessToken
Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
При использовании политик кэширования вы обеспечиваете уникальность ключей кэшированных значений путем настройки ключей кэша. Ключ кэша, наряду с другими настраиваемыми значениями, обеспечивает надежный способ получения тех же данных, которые вы в него ввели. Ключи кэша используются с политиками Populate Cache , LookupCache , InvalidateCache и Response Cache .
Значения элементов конфигурации — <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"/>
Например, чтобы значение ключа кэша включало Content-Type сообщения запроса, необходимо выполнить следующие действия:
<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>Во время выполнения программы ключ кэша будет включать в себя объединенные значения параметров, как показано ниже:
другие_ключевые_части __значение1__значение2
Имейте в виду, что при использовании переменных для вставки значений из параметров, значения будут объединены в порядке, предложенном порядком элементов <KeyFragment> . Также обратите внимание, что Edge будет использовать только те значения, на которые вы специально ссылаетесь с помощью элементов <KeyFragment> . Если списки параметров запроса различаются, эти различия не будут учитываться в ключе кэша.
Альтернативный вариант — использовать переменную request.querystring, которая вставляет всю строку параметров буквально как часть ключа кэша. Имейте в виду, что хотя этот метод учитывает все параметры, если порядок параметров меняется от одного запроса к другому, то ключ будет другим. Другими словами, param1=value1¶m2=value2 и param2=value2¶m1=value1 не приведут к одному и тому же значению ключа кэша.
Список используемых переменных см. в справочнике по переменным .
Использование <Scope> и <Prefix>
Элементы <Scope> и <Prefix> позволяют дополнить ключ префиксом пространства имен. Значения, которые они представляют, добавляются в начало ключа кэша.
Элемент <Scope> используется по умолчанию. Это перечисление, значения которого варьируются от широкого до узкого, при этом самое узкое значение является значением по умолчанию. Это значение по умолчанию используется, если вы не укажете другое значение или значение элемента <Prefix> . Вы можете переопределить значение <Scope> , используя элемент <Prefix> , и таким образом указать пользовательское значение для пространства имен.
Например, значение параметра <Scope> "Global" — самая широкая область видимости — представляет собой название организации и среды. Таким образом, если ваш прокси-сервер развернут в организации с именем "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]
Например, ключ кэша, созданный с использованием значения Exclusive для <Scope> , будет выглядеть следующим образом:
apifactory__test__weatherapi__16__default__apiAccessToken