Mit Cache-Schlüsseln arbeiten

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Wenn Sie Cache-Richtlinien verwenden, können Sie die Eindeutigkeit von im Cache gespeicherten Wertschlüsseln durch Konfigurieren von Cache-Schlüsseln gewährleisten. Ein Cache-Schlüssel bietet zusammen mit anderen Werten, die Sie konfigurieren können, einen zuverlässigen Weg, um dieselben Daten zu erhalten. Sie verwenden Cache-Schlüssel mit den Richtlinien Populate Cache, LookupCache, InvalidateCache und Response Cache

Apigee verwendet die Werte der Konfigurationselemente <Scope>, <CacheKey>/<Prefix> und <CacheKey>/<KeyFragment>, um einen Wert für den Cache-Schlüssel zu erstellen, wobei es sich um eine Kennzeichnung handelt, die dem Wert im Cache zugeordnet ist. Die Zusammensetzung des Cache-Schlüssels funktioniert genauso wie bei allen Cache-Richtlinien.

Mit den folgenden Elementen der Cache-Konfigurationskonfiguration können Sie einen Cache-Schlüssel erstellen:

Cache-Konfigurationselement Beschreibung
<Scope> oder <CacheKey> / <Prefix> Verwenden Sie entweder das Element <Scope> oder <CacheKey> <Prefix>, um ein Präfix zu konfigurieren, das auf den endgültigen Cache-Schlüssel angewendet werden soll. <Scope> gibt eine Liste vordefinierter Werte an. Mit dem Element <CacheKey> <Prefix> wird <Scope> durch einen festen Wert Ihrer Wahl überschrieben.
<CacheKey>/<KeyFragment> Verwenden Sie ein oder mehrere <CacheKey> <KeyFragment>-Elemente, um eine eindeutige Kennung für Cache-Einträge anzugeben. KeyFragment-Werte können statische Literale sein oder aus Variablen festgelegt werden.

Apigee setzt den Cache-Schlüssel aus zwei Teilen zusammen, dem Präfix- und dem zusammengesetzten Fragmentteil, getrennt durch einen doppelten Unterstrich.

PREFIX_PART__FRAGMENT_PART

Der Präfixteil wird durch das Element <Scope> oder das Element <CacheKey> <Prefix> bestimmt, falls vorhanden. Der Fragmentteil besteht aus jedem der Werte aus jedem <KeyFragment>-Element, die durch doppelte Unterstriche verbunden sind.

Mit der Antwort-Cache-Richtlinie können Sie diesem Cache-Schlüssel optional Werte aus dem Antwort-Header "Akzeptieren" hinzufügen.

<CacheKey> verwenden

Das Element <CacheKey> konfiguriert, wie Apigee für jeden erstellten Cache-Eintrag eine eindeutige Kennung (einen Schlüssel) erstellt. Wenn Apigee den im Cache gespeicherten Wert abruft, wird der Cache-Schlüssel verwendet, um den richtigen Wert zu finden. In der ResponseCache-Richtlinie definiert eine Konfiguration den Schlüssel für das Caching und den Abruf. In den Richtlinien "PopulateCache" und "LookupCache" muss jede Richtlinie identische <CacheKey>-Elemente haben, damit ein aus dem Cache abgerufener Wert einem hier festgelegten Wert entspricht.

Das Element <CacheKey> kann ein einzelnes optionales <Prefix>-Element sowie ein oder mehrere <KeyFragment>-Elemente enthalten. Zur Laufzeit verkettet Apigee die von jedem Teil bestimmten Werte mit zwei Unterstrichen, um den Cache-Schlüssel bilden.

Die folgende Konfiguration erstellt beispielsweise einen Wert von myprefix__hello__world zur Verwendung im Cache-Schlüssel:

<CacheKey>
    <Prefix>myprefix</Prefix>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

Sie können Apigee so konfigurieren, dass ein dynamisch zusammengesetzter Cache-Schlüssel verwendet wird. Verweisen Sie dazu auf die Variable in einem <KeyFragment>-Element, wie hier gezeigt:

<KeyFragment ref="variable_name"/>

So sorgen Sie zum Beispiel dafür, dass der Cache-Schlüsselwert den Inhaltstyp der Anfragenachricht enthält:

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

Stellen Sie sich folgende Konfiguration vor:

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

Wenn die Variable request.header.Content-Type den Wert application/json enthält, führt dies zu einem Cache-Schlüssel von system1__apiAccessToken__application/json__bar.

Sie können in einem ref-Attribut plattformdefinierte oder benutzerdefinierte Variablen verwenden.

Cache-Schlüssel werden von Suchparametern abgeleitet

Mit Variablen wie "request.queryparam.<queryparam_name>" und "request.querystring" können Sie einen Cache-Schlüssel so konfigurieren, dass der Schlüssel Teile des Abfragestrings einer Anfrage enthält. Beispielsweise verwendet die folgende URL zwei Abfrageparameter – param1 und param2 –, die Sie in Ihrem Cache-Schlüssel verwenden können:

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

Das <CacheKey>-Element kann diese Werte mit einer Konfiguration wie der folgenden enthalten:

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

Zur Laufzeit würde der Cache-Schlüssel die Parameterwerte so verketten:

prefix_part__value1__value2

Statt mehrere unterschiedliche Abfrageparameter anzugeben, können Sie auch die Variable request.querystring verwenden, die den gesamten String der Parameter wortwörtlich als Teil des Cache-Schlüssels einfügt. Beachten Sie, dass bei dieser Methode alle Parameter berücksichtigt werden. Wenn die Reihenfolge der Parameter jedoch von einer Anfrage zur nächsten variiert, ist der Schlüssel unterschiedlich. Mit anderen Worten, param1=value1&param2=value2 und param2=value2&param1=value1 führen nicht zu demselben Cache-Schlüsselwert.

Verwenden von <Scope> und <Prefix>

Die Elemente <Scope> und <CacheKey>/<Prefix> bieten eine Möglichkeit, im Cache gespeicherte Werte in einem Namespace zu organisieren. Apigee stellt dem Cache-Schlüssel einen daraus abgeleiteten Wert voran. Der Vorteil der Verwendung eines Bereichs oder Präfixes in Ihrem Cache-Schlüssel besteht darin, dass Sie alle Werte, die ein einzelnes Präfix gemeinsam nutzen, mit einem Aufruf der InvalidateCache-Richtlinie entwerten können.

Das Element <Scope> wird standardmäßig verwendet. Dies ist eine Aufzählung, deren Werte von breit bis schmal sind, mit der niedrigsten Stufe. Dieser Standardwert wird verwendet, wenn Sie keinen anderen Wert angeben oder einen <Prefix>-Elementwert angeben. Sie können den Wert von <Scope> mit einem <CacheKey>/<Prefix>-Element überschreiben und einen benutzerdefinierten Wert für den Namespace festlegen.

Beispiel: Der <Scope>-Wert "Global" – der größte Bereich – steht für den Organisations- und Umgebungsnamen. Wenn Ihr Proxy in einer Organisation namens "mycompany" und in einer Umgebung namens "prod" bereitgestellt wird, lautet der resultierende vorangestellte Wert so:

mycompany__prod__[FRAGMENT_PART]

Wie in der LookupCache-Richtlinie beschrieben, kann der Bereich so konfiguriert werden, dass die Genauigkeit von "Global" auf "Ausschließlich" erhöht wird. Ein ausschließlicher Bereich ist am spezifischsten und bedeutet daher das minimale Risiko von Namespace-Konflikten innerhalb eines bestimmten Caches. Jedem Cache-Eintrag mit einem ausschließlichen Bereich wird ein Präfix im folgenden Format vorangestellt:

orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]

Hier einige Beispiele: Dies setzt voraus, dass die 16. Überarbeitung Ihres Proxys („weatherapi“) in einer Organisation namens „mycompany“ und in einer Umgebung namens „prod“ bereitgestellt wird, der proxyEndpoint-Name „default“ heißt und die Cache-Richtlinie an einen Ablauf im proxyEndpoint angehängt ist.

Konfiguration Ergebnis
<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