Trabaja con claves de caché

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Cuando usas políticas de caché, te aseguras la exclusividad de la clave 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 colocas. Usas claves de caché con la Propaga la política de almacenamiento en caché, la política LookupCache, la política InvalidateCache y la política almacenamiento en caché de respuesta.

Los valores de los elementos de configuración (<CacheKey>/<KeyFragment>, <Scope> y <Prefix>) se concatenan para crear un identificador asociado al valor incluida la caché. Usa esta misma configuración para recuperar el valor.

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
<CacheKey>/<KeyFragment> Usa los 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.
<Scope> o <Prefix> Usa los elementos <Scope> o <Prefix> para ampliar aún más las claves de caché de espacio de nombres. <Scope> enumera una lista de valores predefinidos. El elemento <Prefix> anula <Scope> con un valor que elijas.

Estos valores se concatenan de la siguiente forma, con valores <Scope> o <Prefix> separados con guiones bajos dobles de valores KeyFragment. Los valores múltiples de KeyFragment también se separan con guiones bajos dobles.

scope | prefix__keyfragment[__keyfragment]

Con la Política ResponseCache, tienes la opción de adjuntar esta clave de caché con los valores del encabezado Aceptar de respuesta.

Usa <CacheKey>

El elemento <CacheKey> configura la forma en que Edge creará un identificador único (una clave) para cada entrada de caché que cree. Cuando Edge recupera el valor almacenado en caché, usa la clave de caché para encontrar 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 varios elementos <KeyFragment>. En el entorno de ejecución, los valores especificados por los elementos <KeyFragment> se concatenan con dos guiones bajos entre ellos para formar parte de la clave de caché.

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

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

También puedes usar un valor variable en una clave de caché. Para ello, haz referencia a la variable en un elemento <KeyFragment>, como se muestra a continuación:

<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"/>

En la siguiente configuración, la variable request.header.Content-Type tiene el valor application/json.

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

Esto da como resultado una clave de caché que termina en apiAccessToken__application/json__bar.

Para obtener una lista de las variables que puedes usar, consulta Referencia de variables.

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

Mediante las variables, como request.queryparam.<queryparam_name> y request.querystring, puedes configurar una clave de caché para que la clave incluya partes de una cadena de consulta de 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:

other_key_parts__value1__value2

Ten en cuenta que, cuando usas variables para insertar valores de los parámetros, estos se concatenarán en el orden sugerido por el orden de los elementos <KeyFragment>. Además, ten en cuenta que Edge solo usará los valores a los que hagas referencia específicamente con elementos <KeyFragment>. Si tus listas de parámetros de búsqueda de solicitudes varían, las variaciones no se tendrán en cuenta en la clave de caché.

Una alternativa es usar la variable request.querystring, que inserta toda la string de parámetros de forma literal 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é.

Para obtener una lista de las variables que puedes usar, consulta Referencia de variables.

Usa <Scope> y <Prefix>

Los elementos <Scope> y <Prefix> proporcionan una manera de aumentar la clave con un prefijo de espacio de nombres. Los valores que representan se anteponen a la clave de caché.

De forma predeterminada, se usa el elemento <Scope>. Es una enumeración cuyos valores van de amplio a estrecho, con el valor más bajo 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 <Prefix> y, por lo tanto, especificar un valor personalizado para el espacio de nombres.

Por ejemplo, el valor <Scope> “Global” (el permiso 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:

Configuración Resultado
<Scope>Global</Scope> mycompany__prod__.

Si usas el permiso global con la clave de caché definida antes, el resultado es el siguiente:

Configuración Resultado
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

Como se describe en la política LookupCache, el permiso se puede configurar para aumentar la especificidad de Global a Exclusiva. Un permiso 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 permiso exclusivo tiene el prefijo siguiente:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Por ejemplo, una clave de caché creada a partir del valor exclusivo para <Scope> se vería de la siguiente manera:

apifactory__test__weatherapi__16__default__apiAccessToken