Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Правила позволяют хранить данные в кеше общего назначения для более быстрого извлечения. Используя следующие правила, ваш прокси-сервер может хранить и извлекать кешированные данные во время выполнения:
- Заполнить правила кеша, чтобы добавить данные в кеш.
- правило LookupCache для доступа к данным в кеше.
- Правило InvalidateCache для очистки кеша.
Эти правила предназначены для общего кеширования данных, используемых прокси-серверами.
Пример кода в этой статье основан на образце исходящего прокси-сервера OAuth на GitHub (см. список образцов). В этом примере используется правило кеширования для хранения токена доступа OAuth, который можно использовать повторно при нескольких исходящих вызовах.
Каждый тип правил определяется XML-схемой (.xsd). Схемы правил доступны на GitHub.
В следующем примере токен доступа OAuth записывается в кеш с помощью правила PopulateCache. Токен OAuth извлекается для последующих запросов с помощью правила LookupCache. Когда срок действия токена доступа истекает, JavaScript используется для получения нового токена доступа, который, в свою очередь, кешируется правилом PopulateCache.
Заполнить кеш
Используйте правило PopulateCache, чтобы записывать данные в кеш. В этом примере в кеш записывается токен доступа OAuth. Справочную информацию о правилах можно найти в статье Правила заполнения кеша.
<PopulateCache name="token-cache"> <!-- The cache to write to. --> <CacheResource>mycache</CacheResource> <!-- The source of the data, a variable containing the value. --> <Source>twitter-translate.apiAccessToken</Source> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- A unique pointer (a flow variable value) to the data. Use this later to retrieve it. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> <!-- Entries placed into the cache with this policy will expire after 600 seconds. --> <ExpirySettings> <TimeoutInSec>600</TimeoutInSec> </ExpirySettings> </PopulateCache>
Переменные могут заполняться правилами или кодом. Переменная Source в этом примере заполняется следующим вызовом JavaScript:
context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Подробнее о работе с ключами кеша…
Как найти данные в кеше
Получить значения из кеша можно с помощью правила LookupCache. Следующее правило LookupCache считывает значение из mycache и записывает его в переменную twitter-translate.apiAccessToken. Справочную информацию о правилах можно найти в статье Правила LookupCache.
<LookupCache name="token-cache"> <!-- The cache to read from. --> <CacheResource>mycache</CacheResource> <!-- Where to assign the retrieved value - here, a variable. --> <AssignTo>twitter-translate.apiAccessToken</AssignTo> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- The unique pointer (a flow variable value) that was used to store the data in the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> </LookupCache>
Как аннулировать кеш
Кэш можно явно сделать недействительным, указав HTTP-заголовок. При получении запроса, содержащего указанный заголовок HTTP, кеш будет очищен. Справочную информацию о правилах можно найти в разделе Правила InvalidateCache.
<InvalidateCache name="InvalidateMyCache"> <!-- The cache to invalidate. --> <CacheResource>test-cache</CacheResource> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- Fragments constructing the unique pointer used when the data was put into the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" /> </CacheKey> <PurgeChildEntries>true</PurgeChildEntries> </InvalidateCache>