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