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 para una recuperación más rápida. Mediante las siguientes políticas, tu proxy puede almacenar y recuperar datos almacenados en caché en el entorno de ejecución:
- Propaga la política de caché a fin de agregar datos a la caché.
- PolíticaLookupCache para acceder a los datos almacenados en caché.
- Política InvalidateCache para vaciar la caché.
Estas políticas están diseñadas para el almacenamiento en caché general de los datos que usan los proxies.
El código de muestra de este tema se basa en el proxy de muestra de OAuth saliente en GitHub. En este ejemplo, se usa la política de caché a fin de almacenar un token de acceso de OAuth para volver a usarlo en varias llamadas salientes.
En el siguiente ejemplo, se escribe un token de acceso de OAuth en la caché con una política PopulateCache. El token de OAuth se recupera para solicitudes posteriores mediante una política LookupCache. Una vez que el token de acceso caduca, se utiliza JavaScript para recuperar un nuevo token de acceso que, a su vez, se almacena en caché con la política PopulateCache.
Propaga en 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 de la política, consulta Política de propagación de 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 propagar mediante políticas o código. La variable Source
de este ejemplo se propaga mediante la siguiente llamada de JavaScript: context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Para obtener más información sobre las claves de caché, consulta Trabaja con claves de caché.
Busca datos almacenados en caché
Puedes 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 de la política, consulta 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>
Invalida la caché
La caché se puede invalidar de forma explícita si se especifica 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 de la política, consulta 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>