Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Вы можете использовать политики для хранения данных в кэше общего назначения для более быстрого извлечения. Используя следующие политики, ваш прокси-сервер может хранить и извлекать кэшированные данные во время выполнения:
- Заполните политику кэша , чтобы добавить данные в кэш.
- Политика LookupCache для доступа к кэшированным данным.
- Политика InvalidateCache для очистки кеша.
Эти политики предназначены для общего кэширования данных, используемых вашими прокси.
Пример кода в этом разделе основан на образце прокси-сервера Outbound 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>