Esta é a documentação do Apigee Edge.
  Acesse
     Documentação da Apigee X. informações
Configura como os valores armazenados em cache precisam ser gravados no ambiente de execução.
A política de preenchimento de cache foi criada para gravar entradas em um cache de uso geral de curto prazo. Ele é usado em conjunto com a política de pesquisa de cache, para ler entradas de cache, e a política de invalidação de cache, para invalidar entradas.
Para armazenar em cache as respostas de recursos de back-end, consulte a Política de cache de resposta.
Referência de elemento
Veja a seguir os elementos que podem ser configurados nessa política.
<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1">
    <DisplayName>Populate Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <TimeoutInSeconds>300</TimeoutInSeconds>
    </ExpirySettings>
    <Source>flowVar</Source>
</PopulateCache>Atributos <PopulateCache>
A tabela a seguir descreve atributos comuns a todos os elementos pai de políticas:
| Atributo | Descrição | Padrão | Presença | 
|---|---|---|---|
name | 
        
           O nome interno da política. O valor do atributo  Opcionalmente, use o elemento   | 
        N/A | Obrigatório | 
continueOnError | 
        
           Defina como  Defina como   | 
        falso | Opcional | 
enabled | 
        
           Defina como  Defina como   | 
        true | Opcional | 
async | 
        
           Esse atributo está obsoleto.  | 
        falso | Obsoleto | 
Elemento <DisplayName>
Use em conjunto com o atributo name para rotular a política no
  editor de proxy da IU de gerenciamento com um nome de linguagem natural diferente.
<DisplayName>Policy Display Name</DisplayName>
| Padrão | 
           N/A Se você omitir esse elemento, será usado o valor do atributo   | 
      
|---|---|
| Presença | Opcional | 
| Tipo | String | 
Elemento <CacheKey>
Configura um ponteiro exclusivo para um conjunto de dados armazenados no cache.
As chaves de cache são limitadas a um tamanho de 2 KB.
<CacheKey> <Prefix>string</Prefix> <KeyFragment ref="variable_name" /> <KeyFragment>literal_string</KeyFragment> </CacheKey>
| 
           Padrão:  | 
        
           N/A  | 
      
| 
           Presença:  | 
        Obrigatório | 
| 
           Tipo:  | 
        
           N/A  | 
      
<CacheKey> cria o nome de cada parte dos dados armazenados no cache.
No ambiente de execução, os valores <KeyFragment> são prefixados com o valor do elemento <Scope> ou <Prefix>. Por exemplo, o
  seguinte resultado gera uma chave de cache de
  UserToken__apiAccessToken__<value_of_client_id>:
<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>Use o elemento <CacheKey> em conjunto com
  <Prefix> e <Scope>. Para mais informações, consulte Como trabalhar com chaves de cache.
Elemento <CacheResource>
Especifica o cache em que as mensagens precisam ser armazenadas.
Omita esse elemento completamente se esta política, e suas políticas correspondentes de LookupCache e InvalidateCache, estiverem usando o cache compartilhado incluído.
<CacheResource>cache_to_use</CacheResource>
| 
           Padrão:  | 
        
           N/A  | 
      
| 
           Presença:  | 
        Opcional | 
| 
           Tipo:  | 
        
           String  | 
      
Para mais informações sobre como configurar caches, consulte Como criar e editar um cache de ambiente.
Elemento <CacheKey>/<KeyFragment>
Especifica um valor que deve ser incluído na chave de cache, criando um namespace para as solicitações correspondentes às respostas em cache.
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
| 
           Padrão:  | 
        
           N/A  | 
      
| 
           Presença:  | 
        Opcional | 
| 
           Tipo:  | 
        
           N/A  | 
      
Pode ser uma chave (um nome estático fornecido) ou um valor (uma entrada dinâmica definida por uma referência a uma variável). Todos os fragmentos especificados combinados (além do prefixo) são concatenados para criar a chave de cache.
<KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" />
Use o elemento <KeyFragment> em conjunto com
  <Prefix> e <Scope>. Para mais informações, consulte Como trabalhar com chaves de cache.
Atributos
| Atributo | Tipo | Padrão | Obrigatório | Descrição | 
|---|---|---|---|---|
| ref | string | Não | 
           A variável da qual conseguir o valor. Não pode ser usado se esse elemento contiver um valor literal.  | 
      
Elemento <CacheKey>/<Prefix>
Especifica um valor para usar como prefixo da chave de cache.
<Prefix>prefix_string</Prefix>
| 
           Padrão:  | 
        
           N/A  | 
      
| 
           Presença:  | 
        Opcional | 
| 
           Tipo:  | 
        
           String  | 
      
Use esse valor em vez de <Scope> quando quiser especificar seu próprio valor em vez de um valor enumerado com <Scope>. Se definido, <Prefix> precede o valor da chave de cache das entradas gravadas no cache. Um valor de elemento <Prefix> modifica um valor de elemento <Scope>.
Use o elemento <Prefix> em conjunto com
  <CacheKey> e <Scope>. Para mais informações, consulte Como trabalhar com chaves de cache.
Elemento <ExpirySettings>
Especifica quando uma entrada de cache expira. Quando
   presente, <TimeoutInSeconds> substitui
  <TimeOfDay> e <ExpiryDate>.
<ExpirySettings> <!-- use exactly one of the following child elements --> <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds> <ExpiryDate ref="date_variable">expiration_date</ExpiryDate> <TimeOfDay ref="time_variable">expiration_time</TimeOfDay> </ExpirySettings>
| 
           Padrão:  | 
        
           N/A  | 
      
| 
           Presença:  | 
        Obrigatório | 
| 
           Tipo:  | 
        
           N/A  | 
      
Elementos filhos de <ExpirySettings>
  Use exatamente um elemento filho. A tabela a seguir descreve os elementos filhos de <ExpirySettings>:
| Elemento filho | Descrição | 
|---|---|
<TimeoutInSeconds> | 
        
           O número de segundos após o qual uma entrada de cache expira. <ExpirySettings> <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds> </ExpirySettings> Esse elemento substitui o elemento   | 
      
<ExpiryDate> | 
        
           Especifica a data em que uma entrada de cache expira. Especifique uma string no formato  <ExpirySettings> <ExpiryDate ref="var-containing-date">expiry</ExpiryDate> </ExpirySettings> Se a data especificada estiver no passado, a política aplicará o time to live máximo à entrada armazenada em cache. O máximo é de 30 dias.  | 
        
<TimeOfDay> | 
          
             Especifica o horário em que uma entrada de cache deve expirar. 
              Especifique uma string no formato  <ExpirySettings> <TimeOfDay ref="var-containing-time">expiry</TimeOfDay> </ExpirySettings>  | 
        
Especifique apenas um dos possíveis elementos filhos. Se você especificar vários elementos, 
    a ordem de precedência é:TimeoutInSeconds, ExpiryDate, 
    TimeOfDay
Com cada um dos elementos filhos de <ExpirySettings> acima, 
      se você especificar o atributo opcional ref no elemento filho, a política será   
      recuperam o valor de expiração da variável de contexto nomeada. Se a variável não estiver definida, 
      a política usará o valor de texto literal do elemento filho.
Elemento <Scope>
Enumeração usada para construir um prefixo para uma chave de cache quando um elemento
  <Prefix> não é fornecido no elemento <CacheKey>.
<Scope>scope_enumeration</Scope>
| 
           Padrão:  | 
        
           "Exclusivo"  | 
      
| 
           Presença:  | 
        Opcional | 
| 
           Tipo:  | 
        
           String  | 
      
A configuração <Scope> determina uma chave de cache que é anexada de acordo com
  o valor <Scope>. Por exemplo, uma chave de cache assume o seguinte formato quando
  o escopo é definido como Exclusive:
orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]
Se um elemento <Prefix> estiver presente em <CacheKey>, ele
  substituirá um valor de elemento <Scope>. Os valores válidos incluem as enumerações
  abaixo.
Use o elemento <Scope> em conjunto com
  <CacheKey> e <Prefix>. Para mais informações, consulte Como trabalhar com chaves de cache.
Valores aceitáveis
Global | 
        
           A chave de cache é compartilhada entre todos os proxies de API implantados no ambiente. A chave de cache é precedida no formato orgName __ envName __. Se você definir uma entrada   | 
      
Application | 
        
           Nome do proxy da API é usado como prefixo. A chave de cache tem o formato orgName__envName__apiProxyName.  | 
      
Proxy | 
        
           A configuração do ProxyEndpoint é usada como prefixo. A chave de cache é precedida no formato orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .  | 
      
Target | 
        
           A configuração TargetEndpoint é usada como prefixo. Chave do cache com o formato orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName .  | 
      
Exclusive | 
        
           Padrão. Este é o mais específico e, portanto, apresenta o risco mínimo de colisões de namespaces em um determinado cache. O prefixo estará em um destes dois formatos: 
 Chave de cache no formato orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName Por exemplo, a string completa pode ter esta aparência: apifactory__test__weatherapi__16__default__apiAccessToken  | 
      
Elemento <Source>
Especifica a variável com o valor que precisa ser gravado no cache.
<Source>source_variable</Source>
| 
           Padrão:  | 
        
           N/A  | 
      
| 
           Presença:  | 
        Obrigatório | 
| 
           Tipo:  | 
        
           String  | 
      
Observações sobre o uso
Use esta política para armazenamento em cache de uso geral. No ambiente de execução, a
  política <PopulateCache> grava dados da variável especificada no
  elemento <Source> no cache especificado no
  elemento <CacheResource>. É possível usar os elementos <CacheKey>,
  <Scope> e <Prefix> para especificar uma chave que
  pode ser usada da política <LookupCache> para recuperar o valor. Use o
  elemento <ExpirySettings> para configurar quando o valor em cache deve expirar.
O armazenamento em cache de uso geral com as políticas PopulateCache, LookupCache e InvalidateCache usa
  um cache configurado por você ou um cache compartilhado incluído por padrão. Na maioria dos casos, o
  cache compartilhado subjacente precisa atender às suas necessidades. Para usar esse cache, basta omitir o
  elemento <CacheResource>.
Limites de cache: vários limites de cache se aplicam, como nome e tamanho do valor, número total de caches, número de itens em um cache e expiração.
Para saber mais sobre o armazenamento de dados subjacente, consulte a página de detalhes sobre cache. Para mais informações sobre como configurar caches, consulte Como criar e editar um cache de ambiente.
Sobre a criptografia de cache
Edge para nuvem pública: o cache é criptografado apenas em PCI e compatíveis com a HIPAA organizações. A criptografia dessas organizações é configurada durante o provisionamento da organização.
Códigos de erro
Nesta seção, descrevemos os códigos e as mensagens de erro retornados e as variáveis de falha definidas pelo Edge quando a política aciona um erro. Essas informações são importantes para saber se você está desenvolvendo regras de falha para lidar com falhas. Para saber mais, consulte O que você precisa saber sobre erros de política e Como lidar com falhas.
Erros de execução
Esses erros podem ocorrer quando a política é executada.
| Código de falha | Status do HTTP | Ocorre quando | 
|---|---|---|
policies.populatecache.EntryCannotBeCached | 
        500 | Uma entrada não pode ser armazenada em cache. O objeto de mensagem em cache não é uma instância de uma classe que é serializável. | 
Erros de implantação
Esses erros podem ocorrer quando você implanta um proxy que contém essa política.
| Erro de nome | Causa | Correção | 
|---|---|---|
InvalidCacheResourceReference | 
        Esse erro ocorrerá se o elemento <CacheResource> na política PopulateCache estiver definido como um nome que não exista no ambiente em que o proxy de API está sendo implantado. | 
        build | 
CacheNotFound | 
        O cache especificado no elemento <CacheResource> não existe. | 
        build | 
Variáveis de falha
Essas variáveis são definidas quando esta política aciona um erro. Para mais informações, consulte O que você precisa saber sobre erros de política.
| Variáveis | Onde | Exemplo | 
|---|---|---|
fault.name="fault_name" | 
        fault_name é o nome da falha, conforme listado na tabela Erros de ambiente de execução acima. O nome da falha é a última parte do código de falha. | fault.name = "EntryCannotBeCached" | 
      
populatecache.policy_name.failed | 
        policy_name é o nome especificado pelo usuário da política que causou a falha. | populatecache.POP-CACHE-1.failed = true | 
      
Exemplo de resposta de erro
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
Exemplo de regra de falha
<FaultRule name="Populate Cache Fault">
    <Step>
        <Name>AM-EntryCannotBeCached</Name>
        <Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
    </Step>
    <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>