Trabaja con claves de caché

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

Consulta la documentación de Apigee Edge.

Cuando usas políticas de caché, garantizas la exclusividad de las claves de valor almacenada en caché mediante la configuración de las claves de caché. Una clave de caché, junto con otros valores que puedes configurar, te brinda una forma confiable de obtener los mismos datos que ingresas. Usas claves de caché con la política PopulateCache, la política LookupCache, la política InvalidateCache y la política ResponseCache.

Apigee usa los valores de los elementos de configuración (<Scope>, <CacheKey>/<Prefix> y <CacheKey>/<KeyFragment>) para redactar un valor para la clave de caché, que es un identificador asociado con el valor en la caché. La composición de la clave de caché funciona de la misma manera con todas las políticas de caché.

Con los siguientes elementos de configuración de la política de caché, puedes crear una clave de caché:

Elemento de configuración de caché Descripción
<Scope> o <CacheKey> / <Prefix> Usa los elementos <Scope> o <CacheKey> <Prefix> para configurar un prefijo que se aplicará a la clave de caché final. <Scope> enumera una lista de valores predefinidos. El elemento <CacheKey> <Prefix> anula <Scope> con un valor fijo que elijas.
<CacheKey>/<KeyFragment> Usa uno o más elementos <CacheKey> <KeyFragment> combinados a fin de especificar un identificador único para las entradas de caché. Los valores KeyFragment pueden ser literales estáticos o establecidos a partir de variables.

Apigee compone la clave de caché de dos partes, la parte del prefijo y la parte del fragmento compuesto, separadas por un guion bajo doble.

PREFIX_PART__FRAGMENT_PART

La parte del prefijo está determinada por el elemento <Scope> o el elemento <CacheKey> <Prefix> si está presente. La parte del fragmento está compuesta por los valores de cada elemento <KeyFragment>, unidos por guiones bajos dobles.

Con la política Response Cache, tienes la opción de adjuntar esta clave de caché con los valores del encabezado Accept de respuesta.

Usa <CacheKey>

El elemento <CacheKey> configura la forma en la que Apigee creará un identificador único (una clave) para cada entrada de caché que crea. Cuando Apigee recupera el valor almacenado en caché, usa la clave de caché para ubicar el valor correcto. En la política ResponseCache, una configuración define la clave para el almacenamiento en caché y la recuperación. En las políticas PopulateCache y LookupCache, cada política debe tener elementos <CacheKey> idénticos para garantizar que un valor recuperado de la caché corresponda a un valor ubicado allí.

El elemento <CacheKey> puede incluir un único elemento <Prefix> opcional, así como uno o más elementos <KeyFragment>. En el entorno de ejecución, Apigee concatena los valores determinados de cada parte con dos guiones bajos entre ellos para formar la clave de caché.

Por ejemplo, la siguiente configuración crea un valor de myprefix__hello__world para usarlo en la clave de caché:

<CacheKey>
    <Prefix>myprefix</Prefix>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

Puedes configurar Apigee para que use una clave de caché compuesta de forma dinámica si haces referencia a la variable en un elemento <KeyFragment>, como se muestra aquí:

<KeyFragment ref="variable_name"/>

Por ejemplo, para que el valor de la clave de caché incorpore el Content-Type del mensaje de solicitud, haz lo siguiente:

<KeyFragment ref="request.header.Content-Type"/>

Considera la siguiente configuración:

<CacheKey>
  <Prefix>system1</Prefix>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

Si la variable request.header.Content-Type tiene el valor application/json, esto generará una clave de caché de system1__apiAccessToken__application/json__bar.

Puedes usar variables personalizadas o definidas por la plataforma en un atributo ref.

Claves de caché derivadas de los parámetros de consulta

Mediante variables como request.queryparam.<queryparam_name> y request.querystring, puedes configurar una clave de caché para que la clave incluya partes de la cadena de consulta de una solicitud. Por ejemplo, la siguiente URL usa dos parámetros de consulta (param1 y param2) que puedes usar en tu clave de caché:

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

Tu elemento <CacheKey> puede incorporar estos valores con una configuración como la siguiente:

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

En el entorno de ejecución, la clave de caché incluiría los valores de parámetros concatenados, como se muestra a continuación:

prefix_part__value1__value2

En lugar de especificar varios parámetros de consulta distintos, una alternativa es usar la variable request.querystring, que inserta toda la string de parámetros literalmente como parte de la clave de caché. Ten en cuenta que, si bien este método representa todos los parámetros, si el orden de los parámetros varía de una solicitud a la siguiente, la clave será diferente. En otras palabras, param1=value1&param2=value2 y param2=value2&param1=value1 no generan el mismo valor de clave de caché.

Usa <Scope> y <Prefix>

Los elementos <Scope> y <CacheKey>/<Prefix> proporcionan una forma de organizar los valores almacenados en caché en un espacio de nombres. Apigee antepone un valor derivado de ellas a tu clave de caché. La ventaja de usar un alcance o prefijo en tu clave de caché es que puedes invalidar todos los valores que comparten un solo prefijo, con una llamada a la política InvalidateCache.

De forma predeterminada, se usa el elemento <Scope>. Es una enumeración cuyos valores van de amplio a específico, con el valor más específico como predeterminado. Este valor predeterminado se usa, a menos que especifiques otro valor o especifiques un valor del elemento <Prefix>. Puedes anular el valor <Scope> mediante un elemento <CacheKey>/<Prefix> y, por lo tanto, especificar un valor personalizado para el espacio de nombres.

Por ejemplo, el valor <Scope> “Global” (el alcance más amplio) representa la organización y el nombre del entorno. Por lo tanto, si tu proxy se implementa en una organización llamada “mycompany” y en un entorno llamado “prod”, el valor resultante será el siguiente:

mycompany__prod__[FRAGMENT_PART]

Como se describe en la política LookupCache, el alcance se puede configurar para aumentar la especificidad de Global a Exclusivo. Un alcance Exclusivo es el más específico y, por lo tanto, representa el riesgo mínimo de colisiones de espacio de nombres dentro de una caché determinada. Cada entrada de caché con un alcance Exclusivo tiene el prefijo siguiente:

orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]

A continuación, se muestran algunos ejemplos. En estos casos, se supone que la 16.ª revisión de tu proxy denominada “weatherapi” se implementa en una organización llamada “mycompany” y un entorno llamado “prod”, y el nombre de proxyEndpoint es “default” y la política de caché se adjunta a un flujo en proxyEndpoint.

Configuración 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__world