Utilizzo delle chiavi di cache

Questa pagina si applica a Apigee e Apigee ibrido.

Visualizza la documentazione di Apigee Edge.

Quando utilizzi i criteri della cache, garantisci l'univocità 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 inserisci. Puoi utilizzare le chiavi cache con il criterio ReplaceCache, il criterio LookupCache, il criterio InvalidateCache e il criterioResponseCache.

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

Puoi creare una chiave cache con i seguenti elementi di configurazione dei criteri della 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> enumera un elenco di valori predefiniti. L'elemento <CacheKey> <Prefix> sostituisce <Scope> con un valore fisso di tua scelta.
<CacheKey>/<KeyFragment> Utilizza uno o più elementi <CacheKey> <KeyFragment> combinati per specificare un identificatore univoco per le voci della cache. I valori di 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 con frammento composto, 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 doppi trattini bassi.

Con il criterio Cache di risposta, puoi facoltativamente aggiungere questa chiave cache con i valori dell'intestazione Accetta della risposta.

Utilizzo di <CacheKey>

L'elemento <CacheKey> configura il modo in cui Apigee creerà un identificatore univoco (una chiave) per ogni voce della 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 RulesCache e LookupCache, ogni criterio deve avere elementi <CacheKey> identici per garantire che un valore recuperato dalla cache corrisponda a un valore inserito lì.

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 di due trattini bassi per creare la chiave cache.

Ad esempio, la seguente configurazione crea un 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 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 Content-Type del messaggio di richiesta, devi procedere come segue:

<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, verrà generata una chiave cache di system1__apiAccessToken__application/json__bar.

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

Chiavi cache derivate da parametri di ricerca

Utilizzando variabili come request.queryparam.<queryparam_name> e request.querystring, puoi configurare una chiave cache in modo che la chiave includa parti della stringa di query di una richiesta. Ad esempio, il seguente URL utilizza due parametri di ricerca ( param1 e param2 ) che puoi usare nella tua 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 includerebbe i valori dei parametri concatenati, come di seguito:

prefix_part__value1__value2

Anziché specificare più parametri di ricerca distinti, un'alternativa è utilizzare la variabile request.querystring, che inserisce letteralmente l'intera stringa di parametri 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 restituiscono lo stesso valore 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 dalla 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>. È un'enumerazione i cui valori variano da generico a ristretto, con il più ristretto come predefinito. Questo valore predefinito viene utilizzato a meno che non specifichi un altro valore o specifichi un valore dell'elemento <Prefix>. Puoi eseguire l'override del valore <Scope> utilizzando un elemento <CacheKey> / <Prefix> e quindi specificare un valore personalizzato per lo spazio dei nomi.

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

mycompany__prod__[FRAGMENT_PART]

Come descritto nel criterio LookupCache, l'ambito può essere configurato per aumentare la specificità, passando da Globale a Esclusivo. Un ambito esclusivo è il più specifico e, di conseguenza, rappresenta il rischio minimo di collisioni degli spazi dei nomi all'interno di una determinata cache. Ogni voce della cache con un ambito esclusivo ha un prefisso nel formato seguente:

orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]

Di seguito sono riportati alcuni esempi. Presuppongono che il deployment della sedicesima revisione del proxy denominato "weatherapi" sia stato eseguito in un'organizzazione denominata "mycompany" e di un ambiente denominato "prod". Il nome proxyEndpoint è "default" e che il criterio della cache sia collegato a un flusso nel 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