Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Quando utilizzi i criteri di cache, puoi garantire l'unicità delle chiavi dei valori memorizzati nella cache configurando le chiavi di cache. Una chiave della cache, insieme ad altri valori che puoi configurare, ti offre un modo affidabile per recuperare gli stessi dati inseriti. Utilizza le chiavi di cache con il policy PopulateCache, il policy LookupCache, il policy InvalidateCache e il policy ResponseCache.
Apigee utilizza i valori degli elementi di configurazione <Scope>
, <CacheKey>
/<Prefix>
e <CacheKey>
/<KeyFragment>
per comporre un valore per la chiave della cache, che è un identificatore associato al valore nella cache. La composizione della chiave della cache funziona allo stesso modo con tutti
i criteri della cache.
Con i seguenti elementi di configurazione dei criteri di cache, puoi creare una chiave della cache:
Elemento di configurazione della cache | Descrizione |
---|---|
<Scope> o <CacheKey> /
<Prefix>
|
Utilizza gli elementi <Scope> o
<CacheKey> <Prefix>
per configurare un prefisso da applicare alla chiave della cache finale.
<Scope> enumera un elenco di valori predefiniti. L'elemento
<CacheKey> <Prefix>
sostituisce <Scope> con un valore fisso scelto da te.
|
<CacheKey> /<KeyFragment> |
Utilizza uno o più elementi <CacheKey>
<KeyFragment> combinati per specificare un identificativo
univoco per le voci della cache. I valori di KeyFragment possono essere letterali statici
o impostati da variabili.
|
Apigee compone la chiave della cache di due parti, la parte del prefisso e la parte del frammento composito, separate da un doppio trattino basso.
PREFIX_PART__FRAGMENT_PART
La parte del prefisso è determinata dall'elemento <Scope>
o dall'elemento <CacheKey>
<Prefix>
, se presente. La parte del frammento è composta da ciascuno dei valori di ogni
elemento <KeyFragment>
, uniti da due trattini bassi.
Con il criterio della cache delle risposte, puoi facoltativamente aggiungere questa chiave della cache con i valori dell'intestazione Accept della risposta.
Utilizzo di <CacheKey>
L'elemento <CacheKey>
configura la modalità di creazione da parte di Apigee di un identificatore univoco (una chiave) per ogni voce della cache creata. Quando Apigee recupera il valore memorizzato nella cache, utilizza la chiave della cache per individuare il valore corretto.
Nel criterio ResponseCache, una configurazione definisce la chiave sia per la memorizzazione nella cache sia per il recupero. Nei criteri PopulateCache e LookupCache, ogni
criterio deve avere elementi <CacheKey>
identici per garantire
che un valore recuperato dalla cache corrisponda a un valore inserito al suo interno.
L'elemento <CacheKey>
può includere un singolo elemento facoltativo
<Prefix>
e uno o più elementi
<KeyFragment>
. In fase di esecuzione, Apigee concatena i valori determinati da ogni parte con due trattini bassi tra di loro per formare la chiave della cache.
Ad esempio, la seguente configurazione crea un valore di
myprefix__hello__world
da utilizzare nella chiave della cache:
<CacheKey> <Prefix>myprefix</Prefix> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey>
Puoi configurare Apigee in modo che utilizzi una chiave della cache composta dinamicamente facendo riferimento alla variabile in un elemento <KeyFragment>
, come mostrato di seguito:
<KeyFragment ref="variable_name"/>
Ad esempio, per fare in modo che il valore della chiave della cache includa il valore Content-Type del messaggio di richiesta, procedi nel seguente modo:
<KeyFragment ref="request.header.Content-Type"/>
Prendi in considerazione la seguente configurazione:
<CacheKey> <Prefix>system1</Prefix> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.header.Content-Type" /> <KeyFragment>bar</KeyFragment> </CacheKey>
Se la variabile request.header.Content-Type
ha il valore
application/json
, la chiave della cache sarà
system1__apiAccessToken__application/json__bar
.
Puoi utilizzare variabili personalizzate o predefinite dalla piattaforma in un attributo ref
.
Chiavi della cache derivate dai parametri di ricerca
Utilizzando variabili come request.queryparam.<queryparam_name> e request.querystring, puoi configurare una chiave cache in modo che includa parti della stringa di query di una richiesta. Ad esempio, il seguente URL utilizza due parametri di ricerca, param1 e param2, che puoi utilizzare nella chiave della cache:
http://myaccount.apigee.net/mydata?param1=value1¶m2=value2
L'elemento <CacheKey>
può incorporare questi valori con una configurazione come la seguente:
<CacheKey> <KeyFragment ref="request.queryparam.param1" /> <KeyFragment ref="request.queryparam.param2" /> <CacheKey>
In fase di esecuzione, la chiave della cache include i valori del parametro concatenati, come nel seguente esempio:
prefix_part__value1__value2
Anziché specificare più parametri di ricerca distinti, un'alternativa è utilizzare la variabile request.querystring
, che inserisce l'intera stringa di parametri in modo letterale all'interno della chiave della cache. Tieni presente che, anche se questo metodo tiene conto di tutti i parametri, se l'ordine dei parametri varia da una richiesta all'altra, la chiave sarà diversa.
In altre parole, param1=value1¶m2=value2
e
param2=value2¶m1=value1
non generano lo stesso valore della chiave della cache.
Utilizzo di <Scope> e <Prefix>
Gli elementi <Scope>
e <CacheKey>
/
<Prefix>
consentono di organizzare i valori memorizzati nella cache
in uno spazio dei nomi. Apigee antepone un valore derivato da questi alla chiave della cache.
Il vantaggio dell'utilizzo di un ambito o un prefisso nella chiave della cache è che puoi invalidare tutti i valori che condividono un singolo prefisso con una chiamata al criterio InvalidateCache.
L'elemento <Scope>
viene utilizzato per impostazione predefinita. Si tratta di un'enumerazione i cui valori vanno da quelli più ampi a quelli più ristretti, con il valore più ristretto come valore predefinito. Questo valore predefinito viene utilizzato a meno che non specifichi un altro valore o un valore dell'elemento <Prefix>
. Puoi sostituire il valore <Scope>
utilizzando un elemento <CacheKey>
/<Prefix>
e specificare un valore personalizzato per lo spazio dei nomi.
Ad esempio, il valore <Scope>
"Globale", l'ambito più ampio, rappresenta il nome dell'organizzazione e dell'ambiente. Pertanto, se il proxy è stato implementato in un'organizzazione denominata "la mia azienda" e in un ambiente denominato "prod", il valore precompilato risultante sarà il seguente:
mycompany__prod__[FRAGMENT_PART]
Come descritto nel criterio LookupCache, l'ambito può essere configurato per aumentare la specificità da Global a Exclusive. Un ambito esclusivo è il più specifico e, pertanto, rappresenta un rischio minimo di collisioni nello spazio dei nomi all'interno di una determinata cache. A ogni voce della cache con un ambito esclusivo viene anteposto il seguente prefisso:
orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]
Di seguito sono riportati alcuni esempi. Si presume che la 16a revisione del proxy denominato "weatherapi" sia stata implementata in un'organizzazione chiamata "mycompany" e in un ambiente denominato "prod", che il nome di proxyEndpoint sia "default" e che il criterio di cache sia associato a un flusso in proxyEndpoint.
Configurazione | Risultato |
---|---|
<Scope>Global</Scope> <CacheKey> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey> |
mycompany__prod__hello__world . |
<Scope>Exclusive</Scope> <CacheKey> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey> |
mycompany__prod__weatherapi__16__default__hello__world |
<Scope>Exclusive</Scope> <CacheKey> <Prefix>system1</Prefix> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey> |
system1__hello__world
In questo caso, l'elemento |