Mit Cache-Schlüsseln arbeiten

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

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, 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

Die Werte der Konfigurationselemente <CacheKey>/<KeyFragment>, <Scope> und <Prefix> werden verkettet, um eine Kennung zu erstellen, die mit dem Wert verknüpft wird. in den Cache legen. Mit derselben Konfiguration rufen Sie den Wert ab.

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

Cache-Konfigurationselement Beschreibung
<CacheKey>/<KeyFragment> Verwende <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.
<Scope> oder <Prefix> Mit den Elementen <Scope> oder <Prefix> können Sie weitere Namespace-Cache-Schlüssel speichern. <Scope> gibt eine Liste vordefinierter Werte an. Mit dem Element <Prefix> wird <Scope> durch einen Wert Ihrer Wahl überschrieben.

Diese Werte sind in der folgenden Form verkettet, wobei die Werte <Scope> oder <Prefix> durch Schlüsselwerte voneinander getrennt sind. Mehrere KeyFragment-Werte werden außerdem durch doppelte Unterstriche getrennt.

Bereich | prefix__keyfragment[__keyfragment]

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

<CacheKey> verwenden

Das <CacheKey>-Element konfiguriert, wie Edge eine eindeutige Kennung (einen Schlüssel) für jeden von ihm erstellten Cache-Eintrag erstellt. Wenn Edge den im Cache gespeicherten Wert abruft, verwendet er den Cache-Schlüssel, 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 mehrere <KeyFragment>-Elemente enthalten. Zur Laufzeit werden die von <KeyFragment>-Elementen angegebenen Werte mit zwei Unterstrichen verkettet, um einen Teil des Cache-Schlüssels zu bilden.

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

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

Sie können Variablenwerte auch in einem Cache-Schlüssel verwenden, indem Sie auf die Variable in einem <KeyFragment>-Element verweisen, wie hier gezeigt:

<KeyFragment ref="variable_name"/>

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

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

In der folgenden Konfiguration hat die Variable request.header.Content-Type den Wert application/json.

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

Dies führt zu einem Cache-Schlüssel, der mit apiAccessToken__application/json__bar endet.

Eine Liste der Variablen, die Sie verwenden können, finden Sie unter Variablenreferenz.

Cache-Schlüssel werden von Abfrageparametern 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:

other_key_parts__value1__value2

Wenn Sie Variablen zum Einfügen von Werten aus Parametern verwenden, werden die Werte in der Reihenfolge verkettet, in der sie in der Elementreihenfolge <KeyFragment> aufgeführt werden. Beachten Sie außerdem, dass Edge nur diese Werte verwendet, auf die Sie speziell mit <KeyFragment>-Elementen verweisen. Wenn Ihre Suchparameterlisten variieren, werden die Varianten im Cache-Schlüssel nicht berücksichtigt.

Alternativ können Sie die Variable request.querystring verwenden, die den gesamten String der Parameter wortweise 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.

Eine Liste der Variablen, die Sie verwenden können, finden Sie unter Variablenreferenz.

Verwenden von <Scope> und <Prefix>

Die Elemente <Scope> und <Prefix> bieten die Möglichkeit, den Schlüssel mit einem Namespace-Präfix zu erweitern. Die Werte, die sie darstellen, werden Ihrem Cache-Schlüssel vorangestellt.

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 <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:

Konfiguration Ergebnis
<Scope>Global</Scope> mycompany__prod__.

Wenn Sie den globalen Bereich mit dem oben definierten Cache-Schlüssel verwenden, sieht das Ergebnis so aus:

Konfiguration Ergebnis
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

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 ist Folgendes im folgenden Format vorangestellt:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Ein Cache-Schlüssel, der aus der Verwendung des Ausschließlich-Werts für <Scope> erstellt wurde, sieht beispielsweise so aus:

apifactory__test__weatherapi__16__default__apiAccessToken