Utilizzo delle chiavi di cache

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Quando utilizzi i criteri relativi alla cache, garantisci l'unicità delle chiavi dei valori memorizzati nella cache configurando le chiavi cache. Una chiave cache, insieme ad altri valori che puoi configurare, offre un modo affidabile per estrarre gli stessi dati che hai inserito. Puoi utilizzare le chiavi cache con il criterio Popula cache, il criterio LookupCache, il criterio InvalidateCache e il criterio Cache delle risposte.

I valori degli elementi di configurazione, <CacheKey>/<KeyFragment>, <Scope> e <Prefix>, vengono concatenati per creare un identificatore associato al valore inserito nella cache. Utilizza questa stessa configurazione per recuperare il valore.

Con i seguenti elementi di configurazione dei criteri della cache, puoi creare una chiave cache:

Elemento di configurazione cache Descrizione
<CacheKey>/<KeyFragment> Utilizza gli elementi <KeyFragment> <CacheKey> combinati per specificare un identificatore univoco per le voci della cache. I valori KeyFragment possono essere valori letterali statici o essere impostati da variabili.
<Scope> o <Prefix> Utilizza gli elementi <Scope> o <Prefix> per sviluppare ulteriormente le chiavi cache dello spazio dei nomi. <Scope> elenca un elenco di valori predefiniti. L'elemento <Prefix> sostituisce <Scope> con un valore a tua scelta.

Questi valori sono concatenati nella forma seguente, con i valori <Scope> o <Prefix> separati dai valori KeyFragment da trattini bassi doppi. Più valori KeyFragment sono inoltre separati da doppi trattini bassi.

ambito | prefix__keyfragment[__keyfragment]

Con il criterio Cache delle risposte, se vuoi, puoi aggiungere questa chiave cache con i valori dell'intestazione Accept.

Utilizzo di <CacheKey>

L'elemento <CacheKey> configura il modo in cui Edge creerà un identificatore univoco (una chiave) per ogni voce della cache creata. Quando Edge recupera il valore memorizzato nella cache, utilizza la chiave 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.

L'elemento <CacheKey> può includere più elementi <KeyFragment>. In fase di runtime, i valori specificati dagli elementi <KeyFragment> sono concatenati con due trattini bassi tra loro per costituire parte della chiave cache.

Ad esempio, la seguente configurazione crea il valore hello__world da utilizzare nella chiave cache:

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

Puoi anche utilizzare i valori di una variabile in una chiave cache 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 Content-Type del messaggio di richiesta, procedi nel seguente modo:

<KeyFragment ref="request.header.Content-Type"/>

Nella configurazione seguente, la variabile request.header.Content-Type ha il valore application/json.

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

Ne consegue una chiave cache che termina con apiAccessToken__application/json__bar.

Per un elenco delle variabili utilizzabili, consulta Informazioni sulle variabili.

Memorizzare nella cache le chiavi derivate dai parametri di query

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, l'URL riportato di seguito utilizza due parametri di query, param1 e param2, che puoi utilizzare nella chiave cache:

http://myaccount.apigee.net/mydata?param1=value1&param2=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 cache includerà i valori dei parametri concatenati, come indicato di seguito:

other_key_parts__value1__value2

Tieni presente che quando utilizzi le variabili per inserire i valori dai parametri, questi verranno concatenati nell'ordine suggerito dall'ordine degli elementi <KeyFragment>. Inoltre, tieni presente che Edge utilizzerà solo i valori a cui fai riferimento in modo specifico con gli elementi <KeyFragment>. Se gli elenchi dei parametri di query della richiesta sono diversi, le varianti non verranno prese in considerazione nella chiave cache.

In alternativa, utilizza la variabile request.querystring, che inserisce l'intera stringa di parametri letteralmente come parte della chiave cache. Tieni presente che, anche se questo metodo prende in considerazione tutti i parametri, se l'ordine dei parametri varia da una richiesta all'altra, la chiave sarà diversa. In altre parole, param1=value1&param2=value2 e param2=value2&param1=value1 non generano lo stesso valore di chiave cache.

Per un elenco delle variabili utilizzabili, consulta Informazioni sulle variabili.

Utilizzo di <Scope> e <Prefisso>

Gli elementi <Scope> e <Prefix> forniscono un modo per aumentare la chiave con un prefisso dello spazio dei nomi. I valori che rappresentano vengono anteposti alla chiave cache.

Per impostazione predefinita viene utilizzato l'elemento <Scope>. È un'enumerazione i cui valori vanno da ampi a stretti, con il valore predefinito più stretto. Questo valore predefinito viene utilizzato, a meno che non specifichi un altro valore o un valore per l'elemento <Prefix>. Puoi sostituire il valore <Scope> utilizzando un elemento <Prefix>, quindi specifica un valore personalizzato per il pacing dei nomi.

Ad esempio, il valore "Globale" di <Scope>, l'ambito più ampio, rappresenta il nome dell'organizzazione e dell'ambiente. Quindi, se il deployment del tuo proxy è stato eseguito in un'organizzazione denominata "mycompany" e in un ambiente denominato "prod", il valore precedente risultante sarà il seguente:

Configurazione Risultato
<Scope>Global</Scope> mycompany__prod__.

Se utilizzi l'ambito globale con la chiave cache definita sopra, il risultato è il seguente:

Configurazione Risultato
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

Come descritto nel criterio LookupCache, l'ambito può essere configurato in modo da aumentare la specificità da Globale a Esclusivo. L'ambito Esclusivo è quello più specifico e pertanto rappresenta il rischio minimo di collisioni dello spazio dei nomi all'interno di una data cache. Ogni voce della cache con un ambito esclusivo è preceduta dal prefisso nel seguente formato:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Ad esempio, una chiave cache creata utilizzando il valore Esclusivo di <Scope> avrebbe il seguente aspetto:

apifactory__test__weatherapi__16__default__apiAccessToken