Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Pode usar políticas para armazenar dados numa cache de uso geral para uma obtenção mais rápida. Usando as seguintes políticas, o seu proxy pode armazenar e obter dados em cache no tempo de execução:
- Preencher política de cache para adicionar dados à cache.
- Política LookupCache para aceder a dados em cache.
- Política InvalidateCache para limpar a cache.
Estas políticas foram concebidas para a colocação em cache geral de dados usados pelos seus proxies.
O código de exemplo neste tópico baseia-se no proxy de exemplo 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 seguinte, um token de acesso OAuth é escrito na cache através de uma política PopulateCache. O token OAuth é obtido para pedidos subsequentes por uma política LookupCache. Quando a chave de acesso expira, o JavaScript é usado para obter uma nova chave de acesso, que, por sua vez, é colocada em cache pela política PopulateCache.
Preencha a cache
Use a política PopulateCache para escrever dados na cache. Este exemplo escreve uma chave de acesso OAuth na cache. Para informações de referência sobre políticas, consulte a Política de Preenchimento da 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 JavaScript:
context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Para mais informações sobre chaves de cache, consulte o artigo Trabalhar com chaves de cache.
Procure dados em cache
Pode obter valores em cache com a política LookupCache. A seguinte política LookupCache
lê um valor de mycache
e escreve o valor na variável twitter-translate.apiAccessToken
. Para informações de referência
da 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>
Invalide a cache
A cache pode ser invalidada explicitamente especificando um cabeçalho HTTP. Quando é recebido um pedido que contém o cabeçalho HTTP especificado, a cache é esvaziada. Para informações de referência das políticas, consulte a Política 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>