Política InvalidateCache

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Configura como os valores armazenados em cache precisam ser limpos do cache.

Esta política destina-se ao uso geral em cache de curto prazo. Ela é usada em conjunto com a política de preenchimento de cache (para gravar entradas) e a política de cache de pesquisa (para leitura de entradas de cache).

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.

<InvalidateCache async="false" continueOnError="false" enabled="true" name="policy-name">
    <DisplayName>Policy Name</DisplayName>
    <CacheKey>
        <Prefix>prefix_string</Prefix>
        <KeyFragment ref="variable_reference"/>
        <KeyFragment>fragment_string</KeyFragment>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource>cache_to_use</CacheResource>
    <Scope>scope_enumeration</Scope>
    <CacheContext>
        <APIProxyName>application_that_added_the_entry</APIProxyName>
        <ProxyName>proxy_for_which_data_was_cached</ProxyName>
        <TargetName>endpoint_for_which_data_was_cached</TargetName>
    </CacheContext>
    <PurgeChildEntries>true_to_purge_all_child_entries</PurgeChildEntries>
</InvalidateCache>

Atributos <InvalidateCache>

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 name pode conter letras, números, espaços, hifens, sublinhados e pontos. Esse valor não pode exceder 255 caracteres.

Opcionalmente, use o elemento <DisplayName> para rotular a política no editor de proxy da IU de gerenciamento com um nome de linguagem natural diferente.

N/A Obrigatório
continueOnError

Defina como false para retornar um erro quando uma política falhar. Esse é o comportamento esperado na maioria das políticas.

Defina como true para que a execução do fluxo continue, mesmo depois que uma política falhar.

falso Opcional
enabled

Defina como true para aplicar a política.

Defina como false para desativar a política. A política não será aplicada mesmo se ela permanecer anexada a um fluxo.

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 name da política.

Presença Opcional
Tipo String

Elemento <CacheContext>/<APIProxyName>

Especifica o nome do aplicativo que adicionou a entrada do cache.

<APIProxyName>application_that_added_the_entry</APIProxyName>

Atributos

Atributo Descrição Padrão Presença Tipo
ref Variável com o nome do aplicativo. N/A Opcional String

Elemento <CacheContext>

Especifica como criar uma chave de cache quando um valor de elemento Prefix não é especificado ou para limpar entradas de cache adicionadas por outro proxy de API.

<CacheContext>
  <APIProxyName ref="variable_name">application_that_added_the_entry</APIProxyName>
  <TargetName ref="variable_name">endpoint_for_which_data_was_cached</TargetName>
  <ProxyName ref="variable_name">proxy_for_which_data_was_cached</ProxyName>
</CacheContext>

Usado para criar a CacheKey. Os valores de APIProxyName, ProxyName e TargetName são obrigatórios quando um prefixo CacheKey (ou seja, um prefixo personalizado) não é usado para limpar entradas de cache adicionadas por outro proxy de API.

Elemento <CacheKey>

Configura um ponteiro exclusivo para uma parte dos dados armazenados no cache.

<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 devem ser armazenadas.

Omita esse elemento completamente se esta política, e suas políticas PopulateCache e LookupCache correspondentes, estiver 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 Descrição Padrão Presença Tipo
ref A variável da qual obter o valor. Não deve ser usada se esse elemento contiver um valor literal. N/A Opcional String

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 saber mais, consulte Como trabalhar com chaves de cache.

Elemento <CacheContext>/<ProxyName>

Especifica o nome do proxy para o qual os dados foram armazenados em cache.

<ProxyName>proxy_for_which_data_was_cached</ProxyName>

Padrão:

N/A

Presença:

Opcional

Tipo:

String

Atributos

Atributo Descrição Padrão Presença Tipo
ref A variável da qual obter o valor. Não deve ser usada se esse elemento contiver um valor literal. N/A Opcional String

Elemento <PurgeChildEntries>

true para limpar entradas de cache que compartilham o valor definido por um elemento <KeyFragment> configurado para esta política. Valores em outras partes da chave de cache, como em elementos <Prefix>, não são considerados.

Observe que o elemento <KeyFragment> precisa ser especificado. Se não foi, definir "true" para <PurgeChildEntries> poderá resultar na limpeza de todas as entradas do cache.

Invalidar todas as entradas de cache do mesmo valor de fragmento de chave pode ser uma maneira útil de limpar várias entradas relacionadas de uma só vez.

<PurgeChildEntries>true_to_purge_child_entries</PurgeChildEntries>

Padrão:

falso

Presença:

Opcional

Tipo:

Booleanos

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__applicationName__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

Valor do escopo Descrição
Global

A chave de cache é compartilhada em todos os proxies de API implantados no ambiente. A chave de cache é precedida no formato orgName __ envName __.

Se você definir uma entrada <CacheKey> com o apiAccessToken <KeyFragment> e um escopo <Global>, cada entrada será armazenada como orgName__envName__apiAccessToken, seguida pelo valor serializado do token de acesso. Para um proxy de API implantado em um ambiente chamado "test" em uma organização chamada "apifactory", os tokens de acesso são armazenados na seguinte chave de cache: apifactory__test__apiAccessToken.

Application

O nome do proxy de API é usado como prefixo.

A chave de cache é precedida no formato orgName__envName__applicationName.

Proxy

A configuração ProxyEndpoint é usada como prefixo.

A chave de cache é precedida no formato orgName__envName__applicationName__deployedRevisionNumber__proxyEndpointName.

Target

A configuração TargetEndpoint é usada como prefixo.

A chave de cache é precedida no formato orgName__envName__applicationName__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:

  • Se a política estiver anexada ao fluxo ProxyEndpoint, o prefixo estará no formato ApiProxyName_ProxyEndpointName.
  • Se a política estiver anexada a TargetEndpoint, o prefixo estará no formato ApiProxyName_TargetName.

A chave de cache é precedida no formato orgName__envName__applicationName__deployedRevisionNumber__proxyNameITargetName.

Por exemplo, a string completa pode ser assim:

apifactory__test__weatherapi__16__default__apiAccessToken
.

Elemento <CacheContext>/<TargetName>

Especifica o nome do endpoint de destino para o qual os dados foram armazenados em cache.

<TargetName>endpoint_for_which_data_was_cached</TargetName>

Padrão:

N/A

Presença:

Opcional

Tipo:

String

Atributos

Atributo Descrição Padrão Presença Tipo
ref A variável da qual obter o valor. Não deve ser usada se esse elemento contiver um valor literal. N/A Opcional String

Observações sobre uso

O armazenamento em cache de uso geral com a política de preenchimento de cache, 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>.

Para mais informações sobre como configurar caches, consulte Como criar e editar um cache de ambiente. Para saber mais sobre o armazenamento de dados subjacente, consulte a página de detalhes sobre cache.

Códigos de erro

This section describes the error messages and flow variables that are set when this policy triggers an error. This information is important to know if you are developing fault rules for a proxy. To learn more, see What you need to know about policy errors and Handling faults.

Error code prefix

N/A

Runtime errors

This policy does not throw any runtime errors.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference This error occurs if the <CacheResource> element in the InvalidateCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
CacheNotFound This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component.

Fault variables

N/A

Example error response

N/A