Esta página se aplica à Apigee e à Apigee híbrida.
  
    Confira a documentação da 
    Apigee Edge.
  
  
       
  
Ao usar políticas de cache, você garante a exclusividade das chaves de valor armazenadas em cache configurando as chaves de cache. Uma chave de cache, junto com outros valores que podem ser configurados, oferece a você uma maneira confiável de extrair os mesmos dados que foram armazenados. Você usa chaves de cache com as políticas PopulateCache, LookupCache, InvalidateCache e ResponseCache.
  A Apigee usa os valores dos elementos de configuração 
  (<Scope>,
  <CacheKey>/<Prefix> e
  <CacheKey>/<KeyFragment>) para compor um
  valor chave de cache, que é um identificador associado ao
  valor no cache. A composição da chave de cache funciona da mesma forma com todas as
  políticas de cache.
Com os seguintes elementos de configuração da política de cache, é possível criar uma chave de cache:
| Elemento de configuração de cache | Descrição | 
|---|---|
| <Scope>ou<CacheKey>/<Prefix> | Use os elementos <Scope>ou<CacheKey><Prefix>para configurar um prefixo a ser aplicado na chave de cache final.<Scope>enumera uma lista de valores predefinidos. O
        elemento<CacheKey><Prefix>modifica<Scope>para um valor que você
        escolher. | 
| <CacheKey>/<KeyFragment> | Use um ou mais elementos <KeyFragment><CacheKey>combinados para especificar um identificador
exclusivo para entradas de cache. Os valores de KeyFragment podem ser literais estáticos
        ou definidos com base em variáveis. | 
A Apigee compõe a chave de cache de duas partes, a parte de prefixo e a parte do fragmento composto, separadas por um sublinhado duplo.
PREFIX_PART__FRAGMENT_PART
  A parte do prefixo é determinada pelo elemento <Scope> ou
pelo elemento <CacheKey> <Prefix>, se estiver
  presente. A parte do fragmento é composta por cada um dos valores de cada
  elemento <KeyFragment>, unidos por sublinhados duplos.
Com a política de cache de resposta, é possível anexar essa chave de cache com valores do cabeçalho de aceitação de resposta.
Como usar a {CacheKey}
  O elemento <CacheKey> configura como a Apigee criará um
  identificador exclusivo (uma chave) para cada entrada de cache criada. Quando a Apigee
  recupera o valor armazenado em cache, ela usa a chave de cache para localizar o valor correto.
  Na política ResponseCache, uma configuração define a chave para
  o armazenamento em cache e a recuperação. Nas políticas PopulateCache e LookupCache, cada
  política precisa ter elementos <CacheKey> idênticos para garantir
  que um valor recuperado do cache corresponda a um valor inserido nele.
  O elemento <CacheKey> pode incluir um único elemento
  <Prefix>
  opcional, bem como um ou mais
  elementos <KeyFragment>. No ambiente de execução, a Apigee concatena os
  valores determinados de cada parte dos dois sublinhados entre eles para compor a
  chave de cache.
  Por exemplo, a configuração a seguir cria um valor de
  myprefix__hello__world para uso na chave de cache:
<CacheKey>
    <Prefix>myprefix</Prefix>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
  É possível configurar a Apigee para usar uma chave de cache composta dinamicamente
  referenciando a variável em um elemento <KeyFragment>, como
  mostrado aqui:
<KeyFragment ref="variable_name"/>
Por exemplo, para fazer com que o valor da chave de cache incorpore o Content-Type da mensagem de solicitação, faça o seguinte:
<KeyFragment ref="request.header.Content-Type"/>
Considere a seguinte configuração:
<CacheKey> <Prefix>system1</Prefix> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.header.Content-Type" /> <KeyFragment>bar</KeyFragment> </CacheKey>
  Se a variável request.header.Content-Type tiver o valor
  application/json, isso resultará em uma chave de cache de
  system1__apiAccessToken__application/json__bar.
  É possível usar variáveis definidas pela plataforma ou personalizadas em um
  atributo ref.
Chaves de cache derivadas dos parâmetros de consulta
Ao usar variáveis como request.queryparam.<queryparam_name> e request.querystring, é possível configurar uma chave de cache para que a chave inclua partes da string de consulta de uma solicitação. Por exemplo, o URL a seguir usa dois parâmetros de consulta (param1 e param2) que podem ser usados na chave de cache:
http://myaccount.apigee.net/mydata?param1=value1¶m2=value2
  O elemento <CacheKey> pode incorporar esses valores com uma
configuração como a seguinte:
<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>No ambiente de execução, a chave de cache inclui os valores de parâmetro concatenados, como no exemplo a seguir:
prefix_part__value1__value2
  Em vez de especificar vários parâmetros de consulta distintos, é possível
  usar a variável request.querystring, que insere toda
  a string de parâmetros literalmente como parte da chave de cache. Lembre-se de que
  esse método considera todos os parâmetros, mas se a ordem dos
  parâmetros variar de uma solicitação para a próxima, a chave será diferente.
  Em outras palavras, param1=value1¶m2=value2 e
  param2=value2¶m1=value1 não resultam no mesmo valor de chave
  de cache.
Como usar <Scope> e <Prefix>
  Os elementos <Scope> e <CacheKey> /
  <Prefix> oferecem uma maneira de organizar valores em cache
  em um namespace. A Apigee anexa um valor derivado deles à chave de cache.
  A vantagem de usar um escopo ou prefixo na chave de cache é que é possível
  invalidar todos os valores que compartilham um único prefixo, com uma chamada para a
  política InvalidateCache.
  O elemento <Scope> é usado por padrão. Trata-se de uma
  enumeração com valores que variam de amplo a restrito, com o mais restrito como
  padrão. Esse valor padrão será usado, a menos que você especifique outro valor ou
  um valor de elemento <Prefix>. É possível modificar o
  valor <Scope> usando um elemento <CacheKey> /
  <Prefix>. Portanto, especifique um valor personalizado para
  o namespace.
  Por exemplo, o valor <Scope> "Global", o escopo
  mais amplo, representa o nome da organização e do ambiente. Por isso, se o proxy for
  implantado em uma organização chamada "mycompany" e um ambiente chamado
  "prod", o valor resultante anexado como prefixo é o seguinte:
mycompany__prod__[FRAGMENT_PART]
Conforme descrito na política LookupCache, o escopo pode ser configurado para aumentar a especificidade de Global para Exclusivo. Um escopo Exclusivo é o mais específico e, portanto, representa um risco mínimo de colisões de namespaces em um determinado cache. Cada entrada de cache com um escopo Exclusivo é prefixada no seguinte formato:
orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]
Veja alguns exemplos. Eles presumem que a 16a revisão do proxy chamada "weatherapi" seja implantada em uma organização chamada "minhaempresa" e um ambiente chamado "prod", que o nome proxyEndpoint seja "padrão" e que a política de cache é anexada a um fluxo no proxyEndpoint.
| Configuração | Resultado | 
|---|---|
| <Scope>Global</Scope> <CacheKey> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey> | mycompany__prod__hello__world. | 
| <Scope>Exclusive</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey> | mycompany__prod__weatherapi__16__default__hello__world | 
| <Scope>Exclusive</Scope>
<CacheKey>
    <Prefix>system1</Prefix>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey> | system1__hello__worldNesse caso, o elemento  |