Política LookupCache

Estás viendo la documentación de Apigee Edge.
Ve a la documentación de Apigee X.
info

Configura cómo se deben recuperar los valores almacenados en caché en el entorno de ejecución.

Esta política está diseñada para usarse el almacenamiento en caché a corto plazo de uso general. Se usa junto con la política PopulateCache (para escribir entradas) y la política InvalidateCache (para invalidar entradas).

Para almacenar en caché las respuestas de los recursos de backend, consulta la política Response Cache.

Referencia del elemento

En la siguiente lista, se enumeran los elementos que puedes configurar en esta política.

<LookupCache async="false" continueOnError="false" enabled="true" name="Lookup-Cache-1">
    <DisplayName>Lookup Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <CacheLookupTimeoutInSeconds/>
    <Scope>Exclusive</Scope>
    <AssignTo>flowVar</AssignTo>
</LookupCache>

Una caché compartida se incluye de forma predeterminada. Para usar la caché compartida, omite el elemento <CacheResource> en esta configuración de política.

Para obtener más información sobre el almacén de datos subyacente, consulta Objetos internos de la caché. Para obtener más información sobre la configuración de cachés, consulta Crea y edita una caché de entorno.

Atributos de <LookupCache>

En la siguiente tabla, se describen los atributos que son comunes a todos los elementos principales de las políticas:

Atributo Descripción Predeterminado Presencia
name

El nombre interno de la política. El valor del atributo name puede contener letras, números, espacios, guiones, guiones bajos y puntos. Este valor no puede superar los 255 caracteres.

De forma opcional, usa el elemento <DisplayName> para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.

N/A Obligatorio
continueOnError

Configúralo como false para mostrar un error cuando una política falla. Este es el comportamiento previsto para la mayoría de las políticas.

Configúralo como true para continuar con la ejecución del flujo incluso después de que una política falle.

falso Opcional
enabled

Configúralo como true para aplicar la política.

Configúralo como false para desactivar la política. La política no se aplicará incluso si permanece adjunta a un flujo.

true Opcional
async

Este atributo dejó de estar disponible.

falso Obsoleta

Elemento <DisplayName>

Se usan además del atributo name para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.

<DisplayName>Policy Display Name</DisplayName>
Predeterminada

N/A

Si omites este elemento, se usa el valor del atributo name de la política.

Presencia Opcional
Tipo String

Elemento <AssignTo>

Especifica la variable a la que se asigna la entrada de caché después de recuperarse de la caché. La variable se debe poder escribir. Si la búsqueda en caché no recupera un valor, no se establecerá la variable.

<AssignTo>variable_to_receive_cached_value</AssignTo>

Predeterminado:

N/A

Presencia:

Obligatorio

Tipo:

String

Elemento <CacheKey>

Configura un puntero único para un dato almacenado en la caché.

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

Predeterminado:

N/A

Presencia:

Obligatorio

Tipo:

N/A

<CacheKey> construye el nombre de cada dato almacenado en la caché.

En el entorno de ejecución, los valores <KeyFragment> están precedidos del valor del elemento <Scope> o el valor <Prefix>. Por ejemplo, lo siguiente genera una clave de caché de UserToken__apiAccessToken__<value_of_client_id>:

<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>

Debes usar el elemento <CacheKey> junto con <Prefix> y <Scope>. Para obtener más información, consulta Trabaja con claves de caché.

Elemento<CacheLookupTimeoutInSeconds>

Especifica la cantidad de segundos después de los cuales una búsqueda en caché incorrecta se considerará un error de caché. Si esto ocurre, el flujo se reanuda en la ruta de acceso del error de caché.

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

Predeterminado:

30

Presencia:

Opcional

Tipo:

Entero

Elemento<CacheResource>

Especifica la caché en la que se deben almacenar los mensajes.

Omite este elemento por completo si esta política (y las políticas InvalidateCache y PopulateCache correspondientes) usa la caché compartida incluida.

<CacheResource>cache_to_use</CacheResource>

Predeterminado:

N/A

Presencia:

Opcional

Tipo:

String

Para obtener más información sobre la configuración de cachés, consulta Crea y edita una caché de entorno.

Elemento <CacheKey>/<KeyFragment>

Especifica un valor que se debe incluir en la clave de caché lo que crea un espacio de nombres para hacer coincidir las solicitudes con las respuestas almacenadas en caché.

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

Predeterminado:

N/A

Presencia:

Opcional

Tipo:

N/A

Puede ser una clave (un nombre estático que proporcionas) o un valor (un conjunto de entradas dinámicas mediante la referencia de una variable). Todos los fragmentos especificados combinados (más el prefijo) se concatenan para crear la clave de caché.

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

Debes usar el elemento <KeyFragment> junto con <Prefix> y <Scope>. Para obtener más información, consulta Trabaja con claves de caché.

Atributos

Atributo Tipo Predeterminado Obligatorio Descripción
ref string No

Variable de la que se obtiene el valor No debe usarse si este elemento contiene un valor literal.

Elemento <CacheKey>/<Prefix>

Especifica un valor para usar como prefijo de clave de caché.

<Prefix>prefix_string</Prefix>

Predeterminado:

N/A

Presencia:

Opcional

Tipo:

String

Usa este valor en lugar de <Scope> cuando quieras especificar tu propio valor en lugar de un valor enumerado <Scope>. Si se define, <Prefix> antepone el valor de la clave de caché para las entradas escritas en la caché. Un valor de elemento <Prefix> anula un valor de elemento <Scope>.

Debes usar el elemento <Prefix> junto con <CacheKey> y <Scope>. Para obtener más información, consulta Trabaja con claves de caché.

Elemento <Scope>

Enumeración que se usa a fin de construir un prefijo para una clave de caché cuando no se proporciona un elemento <Prefix> en el elemento <CacheKey>.

<Scope>scope_enumeration</Scope>

Predeterminado:

“Exclusivo”

Presencia:

Opcional

Tipo:

String

La configuración <Scope> determina una clave de caché que se antepone según el valor <Scope>. Por ejemplo, una clave de caché tomaría la siguiente forma cuando se establece el alcance aExclusive: orgName__envName__applicationName__proxy|TargetName__[serializedCacheKey ].

Si un elemento <Prefix> está presente en <CacheKey>, sustituye un valor de elemento <Scope>. Los valores válidos incluyen las enumeraciones a continuación.

Debes usar el elemento <Scope> junto con <CacheKey> y <Prefix>. Para obtener más información, consulta Trabaja con claves de caché.

Valores aceptables

Global

La clave de caché se comparte en todos los proxies de API implementados en el entorno. La clave de caché se antepone en el formato orgName __ envName __.

Si defines una entrada <CacheKey> con el apiAccessToken <KeyFragment> y un alcance <Global>, cada entrada se almacena como orgName__envName__apiAccessToken, seguida del valor serializado del token de acceso. Para un proxy de API implementado en un entorno llamado “test” en una organización llamada “apifactory”, los tokens de acceso se almacenarán en la siguiente clave de caché: apifactory__test__apiAccessToken.

Application

El nombre del proxy de la API se usa como prefijo.

La clave de caché se antepone en el formato orgName__envName__applicationName.

Proxy

La configuración de ProxyEndpoint se usa como prefijo.

La clave de caché se antepone en el formato orgName__envName__applicationName__proxyEndpointName.

Target

La configuración TargetEndpoint se usa como prefijo.

La clave de caché se antepone en el formato orgName__envName__applicationName__targetEndpointName.

Exclusive

Predeterminado. Este es el más específico, por lo tanto, representa el riesgo mínimo de colisiones de espacio de nombres dentro de una caché determinada.

El prefijo es uno de estos dos formatos:

  • Si la política se adjunta al flujo ProxyEndpoint, el prefijo tiene el formato ApiProxyName_ProxyEndpointName.
  • Si se adjunta una política en TargetEndpoint, el prefijo tiene el formato ApiProxyName_TargetName.

La clave de caché se antepone en el formato orgName__envName__applicationName__proxyNameITargetName

Por ejemplo, la string completa podría verse de la siguiente manera:

apifactory__test__weatherapi__16__default__apiAccessToken
.

Notas de uso

Usa esta política para el almacenamiento en caché de uso general. En el entorno de ejecución, la política LookupCache recupera un valor de la caché y asigna el valor a la variable que especificas con el elemento AssignTo (si no se recupera ningún valor, la variable no se establecerá). Busca el valor según una clave de caché creada a través de la configuración que combina los elementos CacheKey y Scope. En otras palabras, para recuperar un valor particular agregado a la caché mediante una política PopulateCache, tu política LookupCache debe tener elementos relacionados con la clave de caché configurados de la misma manera que la política PopulateCache.

El almacenamiento en caché de uso general con la política PopulateCache, la política LookupCache y la política InvalidateCache usan la caché que configuras o una caché compartida que se incluye de forma predeterminada. En la mayoría de los casos, la caché compartida subyacente debe satisfacer tus necesidades. Para usar la caché predeterminada, solo debes omitir el elemento <CacheResource>.

Para obtener más información sobre la configuración de cachés, consulta Crea y edita una caché de entorno. Para obtener más información sobre el almacén de datos subyacente, consulta Objetos internos de la caché.

Variables de flujo

Las variables de flujo se pueden usar a fin de configurar el comportamiento del entorno de ejecución dinámico de las políticas y los flujos, según los encabezados HTTP, el contenido del mensaje, o el contexto disponible en el flujo. Para obtener más información sobre las variables de flujo, consulta Referencia de las variables.

Las siguientes variables de flujo predefinidas están disponibles después de personalizar el comportamiento de la caché que defines en una política LookupCache.

Variables Tipo Permiso Descripción
lookupcache.{policy-name}.cachename String Solo lectura Muestra el nombre de la caché usada en la política.
lookupcache.{policy-name}.cachekey String Solo lectura Muestra la clave usada.
lookupcache.{policy-name}.cachehit Booleano Solo lectura Verdadero si la política encontró un valor para la clave de caché especificada.
lookupcache.{policy-name}.assignto String Solo lectura Muestra la variable a la que está asignada la caché.

Códigos de error

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 is set to a name which does not exist in the environment where the API proxy is being deployed.
InvalidTimeout If the <CacheLookupTimeoutInSeconds> element is set to a negative number, then the deployment of the API proxy fails.
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