Utilizzo delle chiavi di cache

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Quando utilizzi i criteri relativi alla cache, puoi garantire l'unicità delle chiavi dei valori memorizzate 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 PopulateCache, il criterio LookupCache, il Criterio InvalidateCache e il Criterio ResponseCache.

Apigee utilizza i valori degli elementi di configurazione (<Scope>, <CacheKey>/<Prefix> e <CacheKey>/<KeyFragment>) per comporre un valore per la chiave cache, che è un identificatore associato al valore nella cache. La composizione delle chiavi cache funziona allo stesso modo con tutti i criteri della cache.

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

Elemento di configurazione cache Descrizione
<Scope> o <CacheKey>/<Prefix> Utilizza gli elementi <Scope> o <CacheKey> <Prefix> per configurare un prefisso da applicare alla chiave cache finale. <Scope> elenca un elenco di valori predefiniti. L'elemento <Prefix> <CacheKey> sostituisce <Scope> con un valore fisso scelto da te.
<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 cache di due parti, la parte con 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 <Prefix> <CacheKey>, se presente. La parte del frammento è composta da ciascuno dei valori di ogni elemento <KeyFragment>, uniti da trattini bassi doppi.

Con il criterio della cache delle risposte, puoi facoltativamente aggiungere questa chiave cache con i valori dell'intestazione della risposta Accept.

Utilizzo di <CacheKey>

L'elemento <CacheKey> configura il modo in cui Apigee creerà un identificatore univoco (una chiave) per ogni voce di cache creata. Quando Apigee 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 un singolo elemento <Prefix> facoltativo e uno o più elementi <KeyFragment>. In fase di runtime, Apigee concatena i valori determinati da ogni parte due trattini bassi tra di loro per creare la chiave cache.

Ad esempio, la configurazione seguente crea il valore 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 cache composta in modo dinamico 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"/>

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 contiene il valore application/json, si ottiene una chiave cache pari a system1__apiAccessToken__application/json__bar.

Puoi utilizzare variabili definite dalla piattaforma o personalizzate in un attributo ref.

Memorizzazione nella cache delle chiavi 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, l'URL seguente utilizza due parametri di ricerca, 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:

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, 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&param2=value2 e param2=value2&param1=value1 non generano lo stesso valore della chiave 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 da questi derivato alla chiave cache. Il vantaggio di utilizzare un ambito o un prefisso nella chiave cache è che puoi invalidare tutti i valori che condividono un singolo prefisso, con una chiamata al criterio InvalidateCache.

Per impostazione predefinita viene utilizzato l'elemento <Scope>. Si tratta di un'enumerazione i cui valori variano da ampio a ristretto, con il valore predefinito come valore più ristretto. Viene utilizzato questo valore predefinito, a meno che non specifichi un altro valore o specifichi un valore per l'elemento <Prefix>. Puoi sostituire il valore <Scope> utilizzando un elemento <CacheKey>/<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:

mycompany__prod__[FRAGMENT_PART]

Come descritto nel criterio LookupCache, l'ambito può essere configurato per aumentare la specificità da Globale a Esclusivo. L'ambito Esclusivo è il più specifico e, di conseguenza, rappresenta il rischio minimo di collisioni dello spazio dei nomi all'interno di una determinata cache. Ogni voce della cache con un 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 il deployment della sedicesima revisione del proxy denominato "weatherapi" sia stato eseguito in un'organizzazione denominata "mycompany" e in un ambiente denominato "prod", che il nome proxyEndpoint sia "default" e che il criterio della cache sia collegato 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