Utiliser des clés de cache

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Lorsque vous utilisez des règles de cache, configurez les clés de cache pour garantir l'unicité des clés de valeur mises en cache. Une clé de cache, ainsi que d'autres valeurs pouvant être configurées, vous offre un moyen fiable de récupérer les mêmes données que celles que vous stockez. Vous utilisez des clés de cache avec la règle Remplir le cache, la règle LookupCache, la règle InvalidateCache et la règle Cache de réponse.

Les valeurs des éléments de configuration (<CacheKey>/<KeyFragment>, <Scope> et <Prefix>) sont concaténées pour créer un identifiant associé à la valeur. que vous mettez dans le cache. Utilisez cette même configuration pour récupérer la valeur.

Avec les éléments de configuration de règle de cache suivants, vous pouvez créer une clé de cache :

Élément de configuration de cache Description
<CacheKey>/<KeyFragment> Utilisez les éléments <CacheKey> <KeyFragment> combinés afin de spécifier un identifiant unique pour les entrées de cache. Les valeurs KeyFragment peuvent être des littéraux statiques ou définies à partir de variables.
<Scope> ou <Prefix> Utilisez les éléments <Scope> ou <Prefix> pour d'autres clés de cache d'espace de noms. <Scope> énumère une liste de valeurs prédéfinies. L'élément <Prefix> remplace <Scope> par une valeur de votre choix.

Ces valeurs sont concaténées dans la forme suivante, avec les valeurs <Scope> ou <Prefix> séparées des valeurs KeyFragment par deux traits de soulignement. Plusieurs valeurs KeyFragment sont également séparées par deux traits de soulignement.

champ d'application | prefix__keyfragment[__keyfragment]

Avec la règle ResponseCache, vous pouvez éventuellement ajouter des valeurs de l'en-tête Accept de réponse à cette clé de cache.

Utiliser <CacheKey>

L'élément <CacheKey> configure la manière dont Edge créera un identifiant unique (une clé) pour chaque entrée de cache qu'il crée. Lorsque Edge récupère la valeur mise en cache, il utilise la clé de cache pour localiser la valeur correcte. Dans la règle ResponseCache, une configuration définit la clé pour la mise en cache et la récupération. Dans les règles PopulateCache et LookupCache, chaque règle doit posséder des éléments <CacheKey> identiques afin de garantir qu'une valeur extraite du cache correspond à une valeur qui s'y trouve.

L'élément <CacheKey> peut inclure plusieurs éléments <KeyFragment>. Lors de l'exécution, les valeurs spécifiées par les éléments <KeyFragment> sont concaténées avec deux traits de soulignement entre elles pour représenter une partie de la clé de cache.

Par exemple, la configuration suivante crée une valeur hello__world à utiliser dans la clé de cache :

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

Vous pouvez également utiliser une valeur de variable dans une clé de cache en référençant la variable dans un élément <KeyFragment>, comme indiqué ci-dessous :

<KeyFragment ref="variable_name"/>

Par exemple, pour que la valeur de la clé de cache contienne le paramètre Content-Type du message de la requête, procédez comme suit :

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

Dans la configuration suivante, la variable request.header.Content-Type possède la valeur application/json.

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

Cela entraîne une clé de cache se terminant par apiAccessToken__application/json__bar.

Pour obtenir une liste des variables que vous pouvez utiliser, consultez la Documentation de référence sur les variables.

Clés de cache dérivées de paramètres de requête

En utilisant des variables telles que request.queryparam.<queryparam_name> et request.querystring, vous pouvez configurer une clé de cache pour que celle-ci intègre des parties de la chaîne de requête d'une requête. Par exemple, l'URL suivante utilise deux paramètres de requête (param1 et param2) que vous pouvez utiliser dans votre clé de cache :

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

Votre élément <CacheKey> peut intégrer ces valeurs avec une configuration telle que :

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

Au moment de l'exécution, la clé de cache inclut les valeurs de paramètres concaténées, comme suit :

other_key_parts__value1__value2

N'oubliez pas que lorsque vous utilisez des variables pour insérer des valeurs à partir de paramètres, les valeurs sont concaténées dans l'ordre suggéré par l'ordre des éléments <KeyFragment>. Notez également qu'Edge n'utilisera que les valeurs que vous référencez spécifiquement avec des éléments <KeyFragment>. Si les listes de paramètres de requête de votre requête varient, les variantes ne sont pas prises en compte dans la clé de cache.

Vous pouvez également utiliser la variable request.querystring, qui insère la chaîne complète des paramètres dans le cadre de la clé de cache. Bien que cette méthode prenne en compte tous les paramètres, si l'ordre des paramètres varie d'une requête à l'autre, la clé sera différente. En d'autres termes, param1=value1&param2=value2 et param2=value2&param1=value1 n'entraînent pas la même valeur de clé de cache.

Pour obtenir une liste des variables que vous pouvez utiliser, consultez la Documentation de référence sur les variables.

Utiliser <Scope> et <Préfixe>

Les éléments <Scope> et <Prefix> permettent de compléter la clé à l'aide d'un préfixe d'espace de noms. Les valeurs qu'ils représentent sont suivies de la clé de cache.

L'élément <Scope> est utilisé par défaut. Il s'agit d'une énumération dont les valeurs vont de la plus large et à la plus restrictive, cette dernière étant la valeur par défaut. Cette valeur par défaut est utilisée, sauf si vous spécifiez une autre valeur, ou une valeur pour l'élément <Prefix>. Vous pouvez remplacer la valeur <Scope> en utilisant un élément <Prefix>, et spécifier ainsi une valeur personnalisée pour l'espace de noms.

Par exemple, la valeur <Scope> "Global", à savoir le champ d'application le plus large, représente le nom de l'organisation et de l'environnement. Ainsi, si votre proxy est déployé dans une organisation appelée "mycompany" et un environnement nommé "prod", la valeur ajoutée en découlant sera la suivante :

Configuration Résultat
<Scope>Global</Scope> mycompany__prod__.

Si vous utilisez le champ d'application "Global" avec la clé de cache définie ci-dessus, le résultat est le suivant :

Configuration Résultat
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

Comme décrit dans la règle LookupCache, le champ d'application peut être configuré pour augmenter la spécificité de "Global" à "Exclusive". Le champ d'application "Exclusive" est le plus spécifique, et sous-entend donc un risque minimal de conflits d'espaces de noms dans un cache donné. Chaque entrée de cache possédant le champ d'application "Exclusive" est précédée du préfixe suivant :

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Par exemple, une clé de cache créée à l'aide de la valeur "Exclusive" pour <Scope> se présente comme suit :

apifactory__test__weatherapi__16__default__apiAccessToken