Utilizzo delle chiavi di cache

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza la documentazione di Apigee Edge.

Quando utilizzi i criteri di cache, puoi garantire 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 recuperare gli stessi dati inseriti. Utilizza le chiavi di 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 per la chiave cache, che è un identificatore associato alla il valore nella cache. La composizione della chiave della cache funziona allo stesso modo con tutti i criteri della cache.

Con i seguenti elementi di configurazione dei criteri di cache, puoi creare una chiave della 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. La Elemento <CacheKey> <Prefix> sostituisce <Scope> con un tuo valore fisso scegliere.
<CacheKey>/<KeyFragment> Utilizza uno o più elementi <CacheKey> <KeyFragment> combinati per specificare un identificativo univoco per le voci della cache. I valori KeyFragment possono essere valori letterali statici o impostato dalle 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.

PARTE_PREFISSO__PARTE_FRAGMENTO

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 Criterio della cache di risposta, puoi aggiungere a questa chiave cache i valori della risposta Accetta intestazione.

Utilizzo di <CacheKey>

L'elemento <CacheKey> configura la modalità di creazione da parte di Apigee di 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 la memorizzazione nella cache e il recupero. Nei criteri PopulationCache e LookupCache, il 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 facoltativo <Prefix> e uno o più elementi <KeyFragment>. In fase di esecuzione, Apigee concatena i valori determinati da ogni parte con due trattini bassi tra di 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 includa il valore Content-Type del messaggio di richiesta, procedi nel seguente modo:

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

Prendi in considerazione 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 definite dalla piattaforma o personalizzate in una Attributo ref.

Chiavi cache derivate da parametri di ricerca

Utilizzo di variabili come request.queryparam.<queryparam_name> e request.querystring, puoi configurare una chiave cache in modo che includa delle parti della stringa di query di una richiesta. Ad esempio, il seguente URL utilizza due parametri di query, 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 un 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, ad esempio le seguenti:

particella_prefisso__valore1__valore2

Invece di specificare più parametri di ricerca distinti, un'alternativa è per 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 della cache.

Utilizzo di <Scope> e <Prefisso>

Gli elementi <Scope> e <CacheKey> / <Prefix> consentono di organizzare i valori memorizzati nella cache in uno spazio dei nomi. Apigee antepone un valore derivato dalla chiave cache. Il vantaggio dell'utilizzo di un ambito o un prefisso nella chiave della 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>. È una enumerazione i cui valori variano da generico a ristretto, con il più stretto predefinito. Questo valore predefinito viene utilizzato a meno che non specifichi un altro valore 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> "Globale", l'ambito più ampio, rappresenta il nome dell'organizzazione e dell'ambiente. Pertanto, se il proxy è stato implementato in un'organizzazione denominata "la mia azienda" e in un ambiente denominato "prod", il valore anteposto 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. Un ambito Esclusivo è più specifici, il che comporta quindi un rischio minimo di collisioni degli spazi dei nomi all'interno di una determinata cache. A ogni voce della cache con un ambito esclusivo viene anteposto il seguente prefisso:

orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]

Di seguito sono riportati alcuni esempi. Presuppongono che la sedicesima revisione del proxy denominata "weatherapi" sono implementato in un'organizzazione chiamata "mycompany" e un ambiente denominato "prod" e il nome proxyEndpoint è "default" e il criterio della cache è 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