Utilizzo delle chiavi di cache

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Quando utilizzi le norme di memorizzazione nella 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 delle chiavi di cache funziona allo stesso modo con tutte le norme di cache.

Con i seguenti elementi di configurazione delle norme di memorizzazione nella 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 della 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 di memorizzazione nella cache delle risposte, puoi aggiungere facoltativamente questa chiave della 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 per la memorizzazione nella cache e 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 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 incorpori il tipo di contenuti 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 della 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 della cache includerà 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&param2=value2 e param2=value2&param1=value1 non generano lo stesso valore della chiave della 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 una 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 sola chiamata al criterio InvalidateCache.

L'elemento <Scope> viene utilizzato per impostazione predefinita. Si tratta di un'enumerazione i cui valori vanno da ampi a ristretti, con il valore più ristretto come 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) 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 è preceduta dal 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 <Prefix> sostituisce <Scope>, motivo per cui lo spazio dei nomi system1 viene visualizzato nel risultato.