Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Puedes usar políticas para almacenar datos en una caché de uso general y así recuperarlos más rápido. Con las siguientes políticas, tu proxy puede almacenar y recuperar datos almacenados en caché en tiempo de ejecución:
- Rellenar política de caché para añadir datos a la caché.
- Política LookupCache para acceder a los datos almacenados en caché.
- InvalidateCache policy para vaciar la caché.
Estas políticas se han diseñado para almacenar en caché de forma general los datos que usan tus proxies.
El código de muestra de este tema se basa en el proxy de muestra de OAuth saliente de GitHub. En este ejemplo se usa la política de caché para almacenar un token de acceso de OAuth y reutilizarlo en varias llamadas salientes.
En el siguiente ejemplo, se escribe un token de acceso de OAuth en la caché mediante una política PopulateCache. Una política LookupCache obtiene el token de OAuth para las solicitudes posteriores. Una vez que caduca el token de acceso, se usa JavaScript para obtener un nuevo token de acceso, que a su vez se almacena en caché mediante la política PopulateCache.
Rellenar la caché
Usa la política PopulateCache para escribir datos en la caché. En este ejemplo se escribe un token de acceso de OAuth en la caché. Para obtener información de referencia sobre la política, consulta la política Rellenar caché.
<PopulateCache name="token-cache"> <!-- The cache to write to. --> <CacheResource>mycache</CacheResource> <!-- The source of the data, a variable containing the value. --> <Source>twitter-translate.apiAccessToken</Source> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- A unique pointer (a flow variable value) to the data. Use this later to retrieve it. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> <!-- Entries placed into the cache with this policy will expire after 600 seconds. --> <ExpirySettings> <TimeoutInSec>600</TimeoutInSec> </ExpirySettings> </PopulateCache>
Las variables se pueden rellenar con políticas o con código. La variable Source
de este ejemplo se rellena con la siguiente llamada de JavaScript:
context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Para obtener más información sobre las claves de caché, consulta el artículo Usar claves de caché.
Buscar datos almacenados en caché
Puede recuperar valores almacenados en caché con la política LookupCache. La siguiente política LookupCache
lee un valor de mycache
y lo escribe en la variable
twitter-translate.apiAccessToken
. Para obtener información de referencia sobre las políticas, consulta la política LookupCache.
<LookupCache name="token-cache"> <!-- The cache to read from. --> <CacheResource>mycache</CacheResource> <!-- Where to assign the retrieved value - here, a variable. --> <AssignTo>twitter-translate.apiAccessToken</AssignTo> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- The unique pointer (a flow variable value) that was used to store the data in the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> </LookupCache>
Invalidar la caché
La caché se puede invalidar explícitamente especificando un encabezado HTTP. Cuando se recibe una solicitud que contiene el encabezado HTTP especificado, se vacía la caché. Para obtener información de referencia sobre la política, consulta la política InvalidateCache.
<InvalidateCache name="InvalidateMyCache"> <!-- The cache to invalidate. --> <CacheResource>test-cache</CacheResource> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- Fragments constructing the unique pointer used when the data was put into the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" /> </CacheKey> <PurgeChildEntries>true</PurgeChildEntries> </InvalidateCache>