Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Quando utilizzi le norme di cache, garantisci 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 ottenere gli stessi dati che hai inserito. Utilizzi le chiavi di cache con i criteri PopulateCache, LookupCache, InvalidateCache e ResponseCache.
Apigee utilizza i valori degli elementi di configurazione:
<Scope>,
<CacheKey>/<Prefix> e
<CacheKey>/<KeyFragment> per comporre un
valore per la chiave della cache, ovvero un identificatore associato
al valore nella cache. La composizione della chiave di cache funziona allo stesso modo con tutte le
norme di cache.
Con i seguenti elementi di configurazione delle norme di cache, puoi creare una chiave 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 cache finale.
<Scope> enumera un elenco di valori predefiniti. L'elemento
<CacheKey> <Prefix>
esegue l'override di <Scope> con un valore fisso a tua
scelta.
|
<CacheKey>/<KeyFragment> |
Utilizza uno o più elementi <CacheKey>
<KeyFragment> combinati per specificare un identificatore univoco
per le voci della cache. I valori KeyFragment possono essere valori 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 aggiungere facoltativamente questa chiave cache con i valori dell'intestazione Accept della risposta.
Utilizzo di <CacheKey>
L'elemento <CacheKey> configura il modo in cui Apigee crea 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.
Nella policy 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.
L'elemento <CacheKey> può includere un singolo elemento
<Prefix>
facoltativo, nonché uno o più elementi
<KeyFragment>. In fase di runtime, Apigee concatena i
valori determinati da ciascuna parte due trattini bassi tra loro per formare la
chiave della cache.
Ad esempio, la seguente configurazione crea un valore di
myprefix__hello__world da utilizzare nella chiave 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 qui:
<KeyFragment ref="variable_name"/>
Ad esempio, per fare in modo che il valore della chiave cache incorpori il tipo di contenuto del messaggio di richiesta, procedi nel seguente modo:
<KeyFragment ref="request.header.Content-Type"/>
Considera 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 definite dalla piattaforma in un
attributo ref.
Chiavi 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 ricercay, param1 e param2, che puoi utilizzare nella chiave 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 runtime, la chiave della cache includerebbe i valori dei parametri 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 letteralmente come parte della chiave cache. Tieni presente che,
sebbene questo metodo tenga 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 cache.
Utilizzo di <Scope> e <Prefix>
Gli elementi <Scope> e <CacheKey>/<Prefix> forniscono un modo per organizzare i valori memorizzati nella cache in uno spazio dei nomi. Apigee antepone un valore derivato a questi elementi alla chiave della cache.
Il vantaggio di utilizzare un ambito o un prefisso nella chiave della cache è che puoi
invalidare tutti i valori che condividono un singolo prefisso con una chiamata alla
policy InvalidateCache.
L'elemento <Scope> viene utilizzato per impostazione predefinita. Si tratta di un'enumerazione i cui valori vanno da un'ampia gamma a una più ristretta, con la più ristretta come valore predefinito. Questo valore predefinito viene utilizzato a meno che tu non ne specifichi un altro 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> "Global" (il più ampio ambito) rappresenta il nome dell'organizzazione e dell'ambiente. Quindi, se il proxy è
implementato in un'organizzazione denominata "mycompany" e in un ambiente denominato
"prod", il valore anteposto risultante sarà il seguente:
mycompany__prod__[FRAGMENT_PART]
Come descritto nelle norme LookupCache, l'ambito può essere configurato per aumentare la specificità da Globale a Esclusivo. Un ambito esclusivo è il più specifico e pertanto rappresenta un rischio minimo di collisioni di spazi dei nomi all'interno di una determinata cache. Ogni voce della cache con ambito esclusivo ha il prefisso nel seguente formato:
orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]
Di seguito sono riportati alcuni esempi. Questi presuppongono che la sedicesima revisione del proxy denominato "weatherapi" sia implementata in un'organizzazione denominata "mycompany" e in un ambiente denominato "prod", che il nome proxyEndpoint sia "default" e che la policy di cache sia collegata 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 |