Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Puoi utilizzare le policy per archiviare i dati in una cache di uso generale per un recupero più rapido. Utilizzando le seguenti policy, il proxy può archiviare e recuperare i dati memorizzati nella cache in fase di runtime:
- Policy Popola cache per aggiungere dati alla cache.
- Policy LookupCache per accedere ai dati memorizzati nella cache.
- Policy InvalidateCache per svuotare la cache.
Queste policy sono progettate per la memorizzazione nella cache generale dei dati utilizzati dai proxy.
Il codice campione in questo argomento si basa sul proxy di esempio OAuth in uscita su GitHub (vedi Elenco degli esempi). Questo esempio utilizza la policy della cache per archiviare un token di accesso OAuth per il riutilizzo in più chiamate in uscita.
Ogni tipo di policy è definito da uno schema XML (.xsd). Per riferimento, gli schemi delle policy sono disponibili su GitHub.
Nell'esempio seguente, un token di accesso OAuth viene scritto nella cache utilizzando una policy PopulateCache. Il token OAuth viene recuperato per le richieste successive da una policy LookupCache. Una volta scaduto il token di accesso, viene utilizzato JavaScript per recuperare un nuovo token di accesso, che a sua volta viene memorizzato nella cache dalla policy PopulateCache.
Popolare la cache
Utilizza la policy PopulateCache per scrivere i dati nella cache. Questo esempio scrive un token di accesso OAuth nella cache. Per informazioni di riferimento sulle policy, consulta la policy Popola 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 popolate da policy o da codice. La variabile Source in questo
esempio viene popolata dalla seguente chiamata JavaScript:
context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Per saperne di più sulle chiavi cache, consulta Utilizzo delle chiavi cache.
Ricercare i dati memorizzati nella cache
Puoi recuperare i valori memorizzati nella cache con la policy LookupCache. La seguente policy LookupCache
legge un valore da mycache e lo scrive nella
variabile twitter-translate.apiAccessToken. Per informazioni di riferimento sulle policy, consulta la policy 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>
Invalidare la cache
La cache può essere invalidata in modo esplicito specificando un'intestazione HTTP. Quando viene ricevuta una richiesta che contiene l'intestazione HTTP specificata, la cache viene svuotata. Per informazioni di riferimento sulle policy, consulta la policy 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>