Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da Apigee Edge.
Use políticas para armazenar dados em um cache de finalidade geral para recuperação mais rápida. Com as seguintes políticas, o proxy pode armazenar e recuperar dados armazenados em cache no ambiente de execução:
- Preencha a política de cache para adicionar dados ao cache.
- Política LookupCache para acessar dados em cache.
- Política InvalidateCache para limpar o cache.
Essas políticas foram criadas para armazenamento em cache geral dos dados usados pelos seus proxies.
O código de amostra neste tópico é baseado no proxy de amostra do OAuth de saída no GitHub. Este exemplo usa a política de cache para armazenar um token de acesso OAuth para reutilização em várias chamadas de saída.
No exemplo a seguir, um token de acesso OAuth é gravado no cache usando uma política "PopulateCache". O token OAuth é recuperado para solicitações subsequentes por uma política LookupCache. Quando o token de acesso expira, o JavaScript é usado para recuperar um novo token de acesso, que, por sua vez, é armazenado em cache pela política "PopulateCache".
Preencher o cache
Use a política PopulateCache para gravar dados no cache. Este exemplo grava um token de acesso do OAuth no cache. Para informações de referência de política, consulte Preencher a política de cache.
<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>
As variáveis podem ser preenchidas por políticas ou por código. A variável Source
neste exemplo é preenchida pela seguinte chamada de JavaScript: context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Para saber mais sobre as chaves de cache, consulte Como trabalhar com chaves de cache.
Pesquisar dados em cache
É possível recuperar valores armazenados em cache com a política LookupCache. A política LookupCache a seguir
lê um valor de mycache
e grava o valor na
variável twitter-translate.apiAccessToken
. Para informações de referência
de política, consulte a política 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>
Invalidar o cache
O cache pode ser invalidado explicitamente com a especificação de um cabeçalho HTTP. Quando uma solicitação que contém o cabeçalho HTTP especificado é recebida, o cache é liberado. Para informações de referência de política, consulte a política LookupCache.
<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>