Colocação em cache de utilização geral

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:

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>