Política de LookupCache

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

Icono de política

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

Esta política está pensada para 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).

Esta política es una política extensible y su uso puede tener implicaciones en cuanto a costes o utilización, en función de tu licencia de Apigee. Para obtener información sobre los tipos de políticas y las implicaciones de uso, consulta Tipos de políticas.

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

Referencia de elemento

A continuación, 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>

Se incluye una caché compartida 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 Internos de la caché. Para obtener más información sobre cómo configurar las cachés, consulta Almacenamiento en caché de uso general.

Atributos <LookupCache>

En la siguiente tabla se describen los atributos que son comunes a todos los elementos superiores de la política:

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.

Opcionalmente, usa el elemento <DisplayName> para etiquetar la política en el editor de proxy de la interfaz de gestión con un nombre diferente en lenguaje natural.

N/A Obligatorio
continueOnError

Asigna el valor false para devolver un error cuando falle una política. Este es el comportamiento esperado de la mayoría de las políticas.

Asigna el valor true para que la ejecución del flujo continúe incluso después de que falle una política. Consulta también:

falso Opcional
enabled

Asigna el valor true para aplicar la política.

Selecciona false para desactivar la política. La política no se aplicará aunque siga adjunta a un flujo.

true Opcional
async

Este atributo está obsoleto.

falso Obsoleto

Elemento <DisplayName>

Úsalo junto con el atributo name para etiquetar la política en el editor de proxy de la interfaz de gestión con un nombre diferente en lenguaje natural.

<DisplayName>Policy Display Name</DisplayName>
Predeterminado

N/A

Si omite este elemento, se usará el valor del atributo name de la política.

Presencia Opcional
Tipo Cadena

Elemento <AssignTo>

Especifica la variable a la que se asigna la entrada de caché después de recuperarla de la caché. La variable debe ser grabable. Si la búsqueda en la caché no devuelve ningún valor, la variable no se definirá.

<AssignTo>variable_to_receive_cached_value</AssignTo>

Valor predeterminado:

N/A

Presencia:

Obligatorio

Tipo:

Cadena

Elemento <CacheKey>

Configura un puntero único a un fragmento de datos almacenado en la caché.

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

Valor predeterminado:

N/A

Presencia:

Obligatorio

Tipo:

N/A

<CacheKey> crea el nombre de cada fragmento de datos almacenado en la caché.

En el tiempo de ejecución, los valores de <KeyFragment> se anteponen al valor del elemento <Scope> o al valor de <Prefix>. Por ejemplo, lo siguiente da como resultado 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>

Para ello, usa el elemento <CacheKey> junto con <Prefix> y <Scope>. Para obtener más información, consulta el artículo Trabajar con claves de caché.

Elemento <CacheLookupTimeoutInSeconds>

Especifica el número de segundos tras los cuales se considerará que no se ha encontrado el elemento en la caché. Si esto ocurre, el flujo se reanuda por la ruta de fallo de caché.

<CacheLookupTimeoutInSeconds>12</CacheLookupTimeoutInSeconds>

Valor predeterminado:

12

Presencia:

Opcional

Tipo:

Entero

Elemento <CacheResource>

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

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

<CacheResource>cache_to_use</CacheResource>

Valor predeterminado:

N/A

Presencia:

Opcional

Tipo:

Cadena

Para obtener más información sobre cómo configurar las cachés, consulta Almacenamiento en caché de uso general.

Elemento <CacheKey>/<KeyFragment>

Especifica un valor que se debe incluir en la clave de caché. Especifica una variable a la que se le va a quitar la referencia con el atributo ref o un valor fijo.

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

Valor predeterminado:

N/A

Presencia:

Opcional

Tipo:

N/A

En el tiempo de ejecución, Apigee crea la clave de caché añadiendo al principio el valor obtenido del elemento <Scope> o del elemento <Prefix> a una concatenación de los valores resueltos de cada uno de los elementos <KeyFragment>. Para obtener más información, consulta el artículo Trabajar con claves de caché.

Atributos

Atributo Tipo Predeterminado Obligatorio Descripción
ref cadena No

La variable de la que se va a obtener el valor. No debe usarse si este elemento contiene un valor literal.

Elemento <CacheKey>/<Prefix>

Especifica un valor que se usará como prefijo de clave de caché.

<Prefix>prefix_string</Prefix>

Valor predeterminado:

N/A

Presencia:

Opcional

Tipo:

Cadena

Un elemento <Prefix> anula cualquier elemento <Scope>.

En el tiempo de ejecución, Apigee crea la clave de caché añadiendo al principio el valor obtenido del elemento <Scope> o del elemento <Prefix> a una concatenación de los valores resueltos de cada uno de los elementos <KeyFragment>. Para obtener más información, consulta el artículo Trabajar con claves de caché.

Elemento <Scope>

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

<Scope>scope_enumeration</Scope>

Valor predeterminado:

"Exclusivo"

Presencia:

Opcional

Tipo:

Cadena

El ajuste <Scope> determina una clave de caché que se antepone según el valor de <Scope>. Por ejemplo, una clave de caché tendría el siguiente formato cuando el ámbito se establece en Exclusive: orgName__envName__applicationName__proxy|TargetName__ [ serializedCacheKey ].

Si hay un elemento <Prefix> en <CacheKey>, este sustituye al valor del elemento <Scope>. Los valores válidos incluyen las enumeraciones que se indican a continuación.

Para obtener más información, consulta el artículo Trabajar con claves de caché.

Valores aceptables

Global

La clave de caché se comparte entre todos los proxies de API implementados en el entorno. La clave de caché se antepone con el formato nombreOrganización __ nombreEntorno __.

Si define una entrada <CacheKey> con <KeyFragment> apiAccessToken y un <Global> scope, cada entrada se almacena como orgName__envName__apiAccessToken, seguido del valor serializado del token de acceso. En el caso de un proxy de API implementado en un entorno llamado "test" de una organización llamada "apifactory", los tokens de acceso se almacenarían en la siguiente clave de caché: apifactory__test__apiAccessToken.

Application

El nombre del proxy de API se usa como prefijo.

La clave de caché se antepone con el formato nombreOrg__nombreEntorno__nombreAplicación.

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 de TargetEndpoint se usa como prefijo.

Clave de caché con el prefijo en el formato orgName__envName__applicationName__targetEndpointName .

Exclusive

Predeterminado. Es la más específica y, por lo tanto, presenta un riesgo mínimo de colisiones de espacios de nombres en una caché determinada.

El prefijo puede tener dos formas:

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

Clave de caché con el prefijo en el formato orgName__envName__applicationName__proxyNameITargetName

Por ejemplo, la cadena completa podría tener este aspecto:

apifactory__test__weatherapi__default__apiAccessToken
.

Notas de uso

Usa esta política para el almacenamiento en caché de uso general. En el tiempo de ejecución, la política LookupCache obtiene un valor de la caché y lo asigna a la variable que especifiques con el elemento AssignTo (si no se obtiene ningún valor, la variable no se definirá). Busca el valor en función de una clave de caché creada mediante una configuración que combina los elementos CacheKey y Scope. Es decir, para recuperar un valor concreto añadido a la caché por una política PopulateCache, tu política LookupCache debe tener elementos relacionados con la clave de caché configurados de la misma forma que la política PopulateCache.

El almacenamiento en caché de uso general con las políticas PopulateCache, LookupCache e InvalidateCache usa una caché que configuras o una caché compartida que se incluye de forma predeterminada. En la mayoría de los casos, la caché compartida subyacente debería satisfacer sus necesidades. Para usar la caché predeterminada, solo tienes que omitir el elemento <CacheResource>.

Para obtener más información sobre cómo configurar las cachés, consulta Almacenamiento en caché de uso general. Para obtener más información sobre el almacén de datos subyacente, consulta Internos de la caché.

Variables de flujo

Las variables de flujo se pueden usar para configurar el comportamiento dinámico del tiempo de ejecución de las políticas y los flujos en función de los encabezados HTTP, el contenido de los mensajes o el contexto disponible en el flujo. Para obtener más información sobre las variables de flujo, consulta la referencia de variables de flujo.

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

Variables Tipo Permiso Descripción
lookupcache.{policy-name}.cachename Cadena Solo lectura Devuelve el nombre de la caché que se usa en la política.
lookupcache.{policy-name}.cachekey Cadena Solo lectura Devuelve la clave utilizada.
lookupcache.{policy-name}.cachehit Booleano Solo lectura True si la política ha encontrado un valor para la clave de caché especificada.
lookupcache.{policy-name}.assignto Cadena Solo lectura Devuelve la variable a la que se asigna la caché.

Códigos de error

En esta sección se describen los mensajes de error y las variables de flujo que se definen cuando esta política activa un error. Es importante que conozcas esta información si vas a desarrollar reglas de errores para un proxy. Para obtener más información, consulta Qué debes saber sobre los errores de políticas y Cómo gestionar los fallos.

Prefijo de código de error

N/A

Errores de tiempo de ejecución

Esta política no genera ningún error de tiempo de ejecución.

Errores de implementación

Estos errores pueden producirse al implementar un proxy que contenga esta política.

Nombre del error Causa Solucionar
InvalidCacheResourceReference Este error se produce si el elemento <CacheResource> se asigna a un nombre que no existe en el entorno en el que se está implementando el proxy de API.
InvalidTimeout Si el elemento <CacheLookupTimeoutInSeconds> tiene asignado un número negativo, la implementación del proxy de API fallará.
CacheNotFound Este error se produce si la caché específica mencionada en el mensaje de error no se ha creado en un componente Message Processor específico.

Variables de error

N/A

Ejemplo de respuesta de error

N/A