Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. info
Puoi utilizzare i criteri per archiviare i dati in una cache per uso generico per recuperarli più rapidamente. Utilizzando i seguenti criteri, il proxy può memorizzare e recuperare i dati memorizzati nella cache in fase di esecuzione:
- Compila criterio di memorizzazione nella cache per aggiungere dati alla cache.
- Criterio LookupCache per accedere ai dati memorizzati nella cache.
- Criterio InvalidateCache per svuotare la cache.
Questi criteri sono progettati per la memorizzazione nella cache generale dei dati utilizzati dai proxy.
Il codice campione in questo argomento è basato sul proxy di esempio OAuth in uscita su GitHub (vedi Elenco dei campioni). Questo esempio utilizza criterio della cache per archiviare un token di accesso OAuth da riutilizzare in più chiamate in uscita.
Ogni tipo di criterio viene definito da uno schema XML (.xsd). Per riferimento, schemi di criteri sono disponibili su GitHub.
Nell'esempio seguente, un token di accesso OAuth viene scritto nella cache utilizzando un metodo coverCache . Il token OAuth viene recuperato per le richieste successive da un criterio LookupCache. Una volta scade, JavaScript viene utilizzato per recuperare un nuovo token di accesso, che a sua volta viene memorizzato nella cache dal criterio CompilaCache.
Compila la cache
Utilizza il criterio PopulateCache per scrivere dati nella cache. Questo esempio scrive un accesso OAuth nella cache. Per informazioni di riferimento alle norme, consulta Compila il criterio Cache.
<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>
Le variabili possono essere completate in base ai criteri o al codice. La variabile Source
in questo
viene compilato dalla seguente chiamata JavaScript:
context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Per ulteriori informazioni sulle chiavi cache, consulta l'articolo Utilizzo delle chiavi cache.
Ricerca dei dati memorizzati nella cache
Puoi recuperare i valori memorizzati nella cache con il criterio LookupCache. Il seguente criterio LookupCache
legge un valore da mycache
e lo scrive nella
variabile twitter-translate.apiAccessToken
. Per riferimento alle norme
informazioni, consulta il criterio 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 cache
La cache può essere invalidata esplicitamente specificando un'intestazione HTTP. Quando una richiesta contiene l'intestazione HTTP specificata, la cache verrà svuotata. Per le norme informazioni di riferimento, consulta il criterio 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>