Mise en cache des réponses pour l'amélioration des performances
Découvrez comment utiliser les stratégies de demande et de réponse de mise en cache des réponses pour réduire le nombre de demandes envoyées aux services back-end avec API Gateway.
En règle générale, vous éviterez de placer une charge inutile sur les services back-end pour améliorer les performances et réduire les coûts. Une façon de réduire cette charge consiste à mettre en cache les réponses aux demandes au cas où les réponses pourraient être réutilisées ultérieurement. Si des demandes similaires sont reçues, elles peuvent être satisfaites en extrayant les données d'un cache de réponses plutôt qu'en envoyant la demande au service back-end.
Le service API Gateway peut s'intégrer à un serveur de cache externe auquel vous avez déjà accès, tel qu'un serveur Redis ou KeyDB. Vous pouvez configurer des passerelles d'API gérées par le service API Gateway pour :
- Stockez les données dans le serveur de cache qui a été renvoyé par un service back-end en réponse à une demande initiale.
- Récupérez les données précédemment stockées à partir du serveur de cache en réponse à une demande ultérieure similaire à la demande d'origine, sans envoyer la demande ultérieure au service back-end.
Pour configurer une passerelle d'API pour la mise en cache des réponses, procédez comme suit :
- activer la mise en cache des réponses sur la passerelle d'API (reportez-vous à Activation de la mise en cache des réponses sur une passerelle d'API)
- configurer la mise en cache des réponses pour des routages individuels dans la passerelle d'API à l'aide de stratégies de demande et de réponse (reportez-vous à Ajout de stratégies de demande et de réponse à la mise en cache des réponses)
Vous pouvez configurer la mise en cache des réponses en :
- utilisant la console,
- modifiant un fichier JSON.
Fonctionnement de la mise en cache des réponses
Lorsque vous avez activé une passerelle d'API pour la mise en cache des réponses, la passerelle d'API analyse les demandes des clients d'API vers les routages qui disposent de stratégies de mise en cache des réponses. La passerelle d'API tente de mettre en correspondance une nouvelle demande avec des demandes similaires précédentes pour lesquelles les réponses sont déjà stockées sur le serveur de cache. La passerelle d'API stocke les réponses dans le serveur de cache pour les demandes GET, HEAD et OPTIONS, à condition que les réponses aient un code de statut HTTP de 200, 204, 301 ou 410. Notez que la passerelle d'API utilise les stratégies de demande et de réponse de mise en cache des réponses que vous configurez et ignore les en-têtes de contrôle de cache (le cas échéant) de la demande ou de la réponse.
Pour identifier de manière unique les réponses dans le serveur de cache, la passerelle d'API utilise des clés de cache dérivées des demandes GET, HEAD et OPTIONS qui ont généré les réponses. Par défaut, une clé de cache comprend :
- l'URL de la demande qui a généré la réponse (à l'exclusion des paramètres de requête de l'URL)
- la méthode HTTP (par exemple, GET, HEAD ou OPTIONS).
- OCID du déploiement d'API qui a reçu la demande
Pour mettre en correspondance plus étroitement les réponses mises en cache avec des demandes particulières, vous pouvez éventuellement personnaliser les clés de cache en ajoutant les valeurs d'une ou de plusieurs variables de contexte de la demande à la clé de cache (reportez-vous à Remarques sur la personnalisation des clés de cache).
Ce qui se passe ensuite dépend de la capacité de la passerelle d'API à mettre en correspondance la nouvelle demande GET, HEAD ou OPTIONS avec une réponse d'une demande similaire précédente :
- Si la passerelle d'API trouve une clé de cache correspondante dans le serveur de cache, elle extrait les données de réponse correspondantes du serveur de cache et les envoie au client d'API en tant que réponse.
- Si la passerelle d'API ne trouve pas de clé de cache correspondante dans le serveur de cache, elle transmet la demande au service back-end. Lorsque le service back-end renvoie une réponse, la passerelle d'API envoie la réponse au client d'API et stocke également la réponse dans le serveur de cache avec une nouvelle clé de cache.
X-Cache-Status
, indique si la réponse a été extraite du serveur de cache comme suit :X-Cache-Status: HIT
indique qu'une clé de cache correspondante a été trouvée dans le serveur de cache. La réponse a donc été extraite du serveur de cache.X-Cache-Status: MISS
indique qu'aucune clé de cache correspondante n'a été trouvée dans le serveur de cache. La réponse provient donc du service back-end.X-Cache-Status: BYPASS
indique que le serveur de cache n'a pas été vérifié. La réponse provient donc du service back-end. Les raisons de ne pas vérifier le serveur de cache sont notamment les problèmes de communication avec le serveur de cache et les paramètres de configuration qui empêchent la récupération des réponses à des demandes spécifiques à partir du serveur de cache.
Conseil : si vous ne voulez pas que les réponses contiennent l'en-tête X-Cache-Status
supplémentaire, utilisez une stratégie de réponse de transformation d'en-tête pour l'enlever (reportez-vous à Ajout de stratégies de réponse de transformation d'en-tête).
Remarques concernant la mise en cache des réponses et la sécurité
Pour garantir que les données du serveur de cache sont stockées et accessibles en toute sécurité :
- Vous configurez la passerelle d'API pour l'authentification auprès du serveur de cache à l'aide des informations d'identification enregistrées en tant que clé secrète dans un coffre du service Vault.
- Vous pouvez indiquer si vous souhaitez configurer une connexion sécurisée via TLS (anciennement SSL) entre la passerelle d'API et un serveur de cache compatible TLS, et si vous souhaitez vérifier les certificats TLS. Notez que seuls les certificats signés par des autorités de certification publiques sont actuellement vérifiés.
- Vous pouvez indiquer un délai d'expiration pour vous assurer que les données mises en cache ne sont pas stockées pendant une période trop longue et que les données obsolètes ne sont pas renvoyées par le serveur de cache en réponse à une demande ultérieure.
- Vous pouvez limiter les URL de demande qui correspondent aux clés de cache en personnalisant les clés de cache pour inclure des paramètres présents dans les URL de demande (reportez-vous à Remarques sur la personnalisation des clés de cache).
- Vous pouvez indiquer de ne pas mettre en mémoire cache les réponses pour les demandes qui incluent des informations d'identification (reportez-vous à Remarques sur la mise en mémoire cache des réponses pour les demandes contenant des informations d'identification (mise en mémoire cache privée)).
Notez qu'il est de votre responsabilité de vous assurer que le serveur de cache lui-même est configuré correctement pour sécuriser les données qui y sont stockées. Plus précisément, Oracle recommande vivement de ne pas réutiliser un serveur de cache existant. Au lieu de cela, Oracle vous recommande de configurer un nouveau serveur de cache uniquement pour la mise en cache des réponses de passerelle d'API, et de limiter l'accès au serveur de cache aux passerelles d'API uniquement.
Remarques sur la mise en cache des réponses pour les demandes contenant des informations d'identification (mise en cache privée)
Les demandes peuvent inclure des en-têtes d'autorisation contenant les informations d'identification permettant d'authentifier un client API auprès d'un service back-end. Les informations d'identification permettent généralement d'accéder à des données privées pour une personne ou une organisation. Par exemple, un en-tête d'autorisation de demande contenant un jeton d'authentification peut être utilisé pour obtenir une réponse contenant des informations sur le compte bancaire. L'existence d'en-têtes d'autorisation dans une demande indique que la réponse peut être de nature sensible et ne doit être partagée qu'avec ceux autorisés à la voir.
De même, si vous avez utilisé des fonctions d'autorisation pour l'authentification et l'autorisation, une stratégie d'authentification identifie un en-tête ou un paramètre de requête dans une demande contenant un jeton d'accès (reportez-vous à Transmission de jetons aux fonctions d'autorisation pour ajouter l'authentification et l'autorisation aux déploiements d'API). L'existence dans une demande du paramètre d'en-tête ou de requête identifié dans une stratégie d'authentification indique également que la réponse peut être de nature sensible et qu'elle ne doit être partagée qu'avec ceux autorisés à la voir.
La mise en cache des réponses pour les demandes qui contiennent des en-têtes d'autorisation, ou qui contiennent un en-tête ou un paramètre de requête identifié dans une stratégie d'authentification, est appelée "mise en cache privée". Bien que la mise en cache privée puisse accélérer les réponses à des demandes similaires à l'avenir, elle risque de compromettre la sécurité des données. Par conséquent, pour éviter les failles de sécurité, la mise en cache privée est désactivée par défaut. Toutefois, route par route, vous pouvez activer la mise en cache privée.
Si vous décidez d'activer la mise en cache privée, nous vous recommandons de personnaliser la clé de cache pour isoler les réponses de sorte que chaque réponse ne soit renvoyée qu'à ceux autorisés à la voir. Par exemple :
- Ajoutez la valeur de l'en-tête d'autorisation de demande, ou la valeur du paramètre d'en-tête ou de requête identifié dans une stratégie d'authentification, à la clé de cache en tant que variable de contexte à partir d'une table de contexte.
- Si vous avez utilisé des fonctions d'autorisation ou des JWT pour l'authentification et l'autorisation, ajoutez la valeur d'une variable de contexte qui identifie le principal de demande (par exemple,
sub
ouprincipalId
) à la clé de cache de la table de contexterequest.auth
. Reportez-vous à Ajout de l'authentification et de l'autorisation aux déploiements d'API.
Une réponse mise en cache avec une valeur dans sa clé de cache pour une variable de contexte ne sera renvoyée qu'en réponse à une demande ayant une valeur correspondante.
Il est de votre responsabilité de spécifier un ajout de clé de cache qui assure une isolation suffisante entre les réponses mises en cache. Reportez-vous à Remarques sur la personnalisation des clés de cache.
Remarques concernant la personnalisation des clés de cache
Les réponses stockées dans le serveur de cache sont identifiées de manière unique par une clé de cache. Par défaut, une clé de cache est dérivée de l'URL de la demande qui a généré la réponse (à l'exception des variables de contexte présentes dans la demande), de la méthode HTTP et de l'OCID du déploiement d'API. Pour établir une correspondance plus étroite entre les réponses mises en cache et des demandes particulières, vous pouvez éventuellement personnaliser les clés de cache en ajoutant les valeurs d'une ou de plusieurs variables de contexte de la demande à la clé de cache. Si vous décidez d'activer la mise en cache privée pour les demandes contenant des en-têtes d'autorisation ou un paramètre d'en-tête ou de requête identifié dans une stratégie d'authentification, nous vous recommandons d'ajouter leurs valeurs en tant que variables de contexte à la clé de cache.
Pour indiquer les valeurs de variable de contexte à ajouter à la clé de cache, utilisez le format <context-table-name>.[<key>]
où :
<context-table-name>
correspond àrequest.query
,request.headers
ourequest.auth
<key>
correspond à l'une des valeurs suivantes :- un nom de paramètre de requête inclus dans la demande adressée à l'API,
- un nom d'en-tête inclus dans la demande adressée à l'API.
- un nom de paramètre d'authentification renvoyé par une fonction d'autorisation ou contenu dans un jeton JWT
- le champ d'en-tête
Host
dans la demande à l'API
Par exemple :
- Pour ajouter la valeur de la variable de contexte
X-Username
à une clé de cache lorsqu'elle est incluse dans un en-tête de demande, indiquezrequest.headers[X-Username]
en tant qu'ajout de clé de cache. - Pour ajouter le principal de demande (la personne ou l'application qui envoie la demande) à une clé de cache lorsqu'elle est incluse en tant que demande
sub
dans un jeton JWT, indiquezrequest.auth[sub]
en tant qu'ajout de clé de cache. - Pour ajouter la valeur de l'en-tête
Authorization
à une clé de cache, indiquezrequest.headers[Authorization]
en tant qu'ajout de clé de cache. - Pour ajouter la valeur d'un jeton d'accès renvoyé par une fonction d'autorisation et contenu dans un en-tête nommé
X-Custom-Auth
à une clé de cache, indiquezrequest.headers[X-Custom-Auth]
en tant qu'ajout de clé de cache. - Pour ajouter la valeur du champ d'en-tête
Host
inclus dans la demande à une clé de cache, indiquezrequest.host
.
Pour plus d'informations sur les variables de contexte, reportez-vous à Ajout de variables de contexte aux stratégies et aux définitions de back-end HTTP.
Prérequis pour la mise en mémoire cache des réponses
Pour pouvoir activer la mise en cache des réponses pour une passerelle d'API, procédez comme suit :
- Un serveur de cache qui implémente le protocole RESP (tel que Redis ou KeyDB) doit avoir déjà été configuré et doit être disponible.
- Le sous-réseau de la passerelle d'API doit pouvoir accéder au serveur de cache.
- Le serveur de cache doit être hébergé sur un seul hôte de serveur de cache et ne doit pas être distribué sur plusieurs instances d'un cluster.
- Vous devez avoir déjà stocké les informations d'identification pour vous authentifier auprès du serveur de cache en tant que clé secrète dans un coffre du service Vault (reportez-vous à Création d'une clé secrète dans un coffre). Vous devez également connaître l'OCID et le numéro de version de la clé secrète. Lorsque vous indiquez le contenu de la clé secrète, utilisez le format
{"username":"<cache-server-username>", "password":"<cache-server-password>"}
. Notez que la spécification d'un nom d'utilisateur est facultative. Par exemple :{"password":"<cache-server-password>"}
- Vous devez déjà avoir configuré une stratégie pour autoriser les passerelles d'API d'un groupe dynamique à accéder à la clé secrète du service Vault qui contient les informations d'identification à authentifier auprès du serveur de cache (reportez-vous à Création d'une stratégie pour autoriser les passerelles d'API à accéder aux informations d'identification stockées en tant que clés secrètes dans le service Vault).
Activation de la mise en cache des réponses sur une passerelle d'API
Vous pouvez activer la mise en cache des réponses sur une passerelle d'API à l'aide de la console ou en modifiant un fichier JSON.
Utilisation de la console pour activer et configurer la mise en cache des réponses
Afin d'activer et de configurer la mise en cache des réponses pour une passerelle d'API à l'aide de la console, procédez comme suit :
-
Créez ou mettez à jour une passerelle d'API à l'aide de la console.
Pour plus d'informations, reportez-vous à Création d'une passerelle d'API et à Mise à jour d'une passerelle d'API.
-
Dans la section Options avancées de la boîte de dialogue Créer une passerelle, sélectionnez le bouton Activer en regard de Mise en cache des réponses et procédez comme suit :
- Spécifiez les options Serveur de cache, comme suit :
-
Hôte : nom d'hôte du serveur de cache. Par exemple,
"cache.example.com"
. -
Numéro de port : numéro de port sur le serveur de cache. Par exemple :
6379
.
-
Hôte : nom d'hôte du serveur de cache. Par exemple,
- Indiquez les options Informations d'identification du serveur de cache, comme suit :
- Coffre : nom du coffre dans le service Vault qui contient les informations d'identification permettant de se connecter au serveur de cache.
- Clé secrète du coffre : nom de la clé secrète dans le coffre indiqué qui contient les informations d'identification permettant de se connecter au serveur de cache.
- Numéro de version de clé secrète du coffre : version de la clé secrète à utiliser.
- Spécifiez les options Connexion au serveur de cache, comme suit :
- Utiliser SSL/TLS dans les demandes : indique si le serveur de cache est compatible TLS et, par conséquent, si une connexion sécurisée doit être configurée entre la passerelle d'API et le serveur de cache via TLS (anciennement SSL).
- Vérification du certificat SSL/TLS : indique si la passerelle d'API vérifie le certificat TLS (anciennement SSL) du serveur de cache. Notez que seuls les certificats signés par les autorités de certification publiques sont actuellement vérifiés.
- Délai d'expiration de connexion : délai d'attente avant l'abandon d'une tentative de connexion au serveur de cache, en millisecondes. Si la passerelle d'API ne peut pas se connecter au serveur de cache dans ce délai, elle n'extrait pas les données précédemment mises en cache à partir du serveur de cache et n'écrit pas de nouvelles données vers le serveur de cache pour une réutilisation future potentielle.
- Délai d'expiration de la lecture : délai d'attente avant l'abandon d'une tentative de lecture de données à partir du serveur de cache, en millisecondes. Si la passerelle d'API ne peut pas extraire de données du serveur de cache pendant ce temps, elle envoie une demande au service back-end.
- Délai d'expiration d'envoi : délai d'attente avant l'abandon d'une tentative d'écriture de données sur le serveur de cache, en millisecondes. Si la passerelle d'API ne peut pas envoyer de données au serveur de cache dans ce délai, aucune réponse n'est mise en cache pour une réutilisation future potentielle.
- Spécifiez les options Serveur de cache, comme suit :
- Sélectionnez Créer ou Enregistrer les modifications pour créer ou mettre à jour la passerelle d'API.
Utilisation de l'interface de ligne de commande et d'un fichier JSON pour activer et configurer la mise en cache des réponses
Afin d'activer et de configurer la mise en cache des réponses pour une passerelle d'API à l'aide de l'interface de ligne de commande et d'un fichier JSON, procédez comme suit :
-
A l'aide de l'éditeur JSON de votre choix, créez un fichier de configuration de cache au format suivant :
{ "type" : "EXTERNAL_RESP_CACHE", "servers" : [ { "host" : "<cache-server-hostname>", "port" : <port-number> } ], "authenticationSecretId" : "<secret-ocid>", "authenticationSecretVersionNumber" : <secret-version-number>, "isSSLEnabled" : <true|false>, "isSSLVerifyDisabled" : <true|false>, "connectTimeoutInMs" : <milliseconds>, "readTimeoutInMs" : <milliseconds>, "readTimeoutInMs" : <milliseconds> }
où :"type" : "EXTERNAL_RESP_CACHE"
indique que la mise en cache des réponses doit être activée. Si cette option n'est pas définie, la valeur par défaut est"type" : "NONE"
, ce qui indique que la mise en cache des réponses est désactivée."host" : "<cache-server-hostname>"
est le nom d'hôte du serveur de cache. Par exemple,"host" : "cache.example.com"
."port" : <port-number>
est le numéro de port sur le serveur de cache. Par exemple,"port" : 6379
."authenticationSecretId" : "<secret-ocid>"
est l'OCID de la clé secrète définie dans un coffre du service Vault qui contient les informations d'identification permettant de se connecter au serveur de cache. Par exemple,"authenticationSecretId" : "ocid.oc1.sms.secret.aaaaaa______gbdn"
"authenticationSecretVersionNumber" : <secret-version-number>
est la version de la clé secrète à utiliser. Par exemple,"authenticationSecretVersionNumber" : 1
"isSSLEnabled" : <true|false>
indique si le serveur de cache est activé pour TLS, et donc s'il faut configurer une connexion sécurisée entre la passerelle d'API et le serveur de cache sur TLS (anciennement SSL). Si elle n'est pas définie, la valeur par défaut estfalse
."isSSLVerifyDisabled" : <true|false>
indique si la passerelle d'API vérifie le certificat TLS (anciennement SSL) du serveur de cache. Notez que seuls les certificats signés par des autorités de certification publiques sont actuellement vérifiés. Si elle n'est pas définie, la valeur par défaut estfalse
."connectTimeoutInMs" : <milliseconds>
indique le délai d'attente avant l'abandon d'une tentative de connexion au serveur de cache, en millisecondes. Si la passerelle d'API ne peut pas se connecter au serveur de cache pendant cette période, elle n'extrait pas les données précédemment mises en cache du serveur de cache et n'écrit pas de nouvelles données sur le serveur de cache en vue d'une éventuelle réutilisation future. Si elle n'est pas définie, la valeur par défaut est1000
. Par exemple,"connectTimeoutInMs" : 1500
"readTimeoutInMs" : <milliseconds>
indique le délai d'attente avant l'abandon d'une tentative de lecture de données à partir du serveur de cache, en millisecondes. Si la passerelle d'API ne peut pas extraire les données du serveur de cache pendant cette période, elle envoie une demande au service back-end. Si elle n'est pas définie, la valeur par défaut est1000
. Par exemple,"readTimeoutInMs" : 250
"sendTimeoutInMs" : <milliseconds>
indique le délai d'attente avant l'abandon d'une tentative d'écriture de données sur le serveur de cache, en millisecondes. Si la passerelle d'API ne peut pas envoyer de données au serveur de cache dans ce délai, les réponses ne sont pas mises en cache en vue d'une éventuelle réutilisation future. Si elle n'est pas définie, la valeur par défaut est1000
. Par exemple,"sendTimeoutInMs" : 1250
Par exemple :
{ "type" : "EXTERNAL_RESP_CACHE", "servers" : [ { "host" : "cache.example.com", "port" : 6379 } ], "authenticationSecretId" : "ocid.oc1.sms.secret.aaaaaa______gbdn", "authenticationSecretVersionNumber" : 1, "isSSLEnabled" : true, "isSSLVerifyDisabled" : false, "connectTimeoutInMs" : 1000, "readTimeoutInMs" : 250, "sendTimeoutInMs" : 1000 }
- Enregistrez le fichier de configuration du cache sous le nom de votre choix. Par exemple,
resp-cache-config.json
- Utilisez le fichier de configuration de cache lorsque vous créez ou mettez à jour une passerelle d'API à l'aide de l'interface de ligne de commande :
- Pour créer une passerelle d'API avec mise en cache des réponses activée, suivez les instructions de l'interface de ligne de commande dans Création d'une passerelle d'API et définissez le paramètre
--response-cache-details
sur le nom et l'emplacement du fichier de configuration de cache. Par exemple :oci api-gateway gateway create --display-name "Hello World Gateway" --compartment-id ocid1.compartment.oc1..aaaaaaaa7______ysq --endpoint-type "PRIVATE" --subnet-id ocid1.subnet.oc1.iad.aaaaaaaaz______rca --response-cache-details file:///etc/caches/resp-cache-config.json
- Pour mettre à jour une passerelle d'API existante afin d'activer la mise en cache des réponses ou de modifier les paramètres de mise en cache des réponses, suivez les instructions de l'interface de ligne de commande dans Mise à jour d'une passerelle d'API et définissez le paramètre
--response-cache-details
sur le nom et l'emplacement du fichier de configuration de cache. Par exemple :oci api-gateway gateway update --gateway-id ocid1.apigateway.oc1..aaaaaaaab______hga --response-cache-details file:///etc/caches/resp-cache-config.json
- Pour créer une passerelle d'API avec mise en cache des réponses activée, suivez les instructions de l'interface de ligne de commande dans Création d'une passerelle d'API et définissez le paramètre
Ajout de stratégies de réponse et de demande de mise en cache des réponses
Vous pouvez ajouter des stratégies de réponse et de demande de mise en cache de réponse aux spécifications de déploiement d'API à l'aide de la console ou en modifiant un fichier JSON. Vous devez activer la mise en cache des réponses sur une passerelle d'API pour que les stratégies de demande et de réponse prennent effet.
Utilisation de la console pour ajouter des stratégies de demande et de réponse à la mise en cache des réponses
Pour ajouter une demande de mise en cache de réponse et des stratégies de réponse à une spécification de déploiement d'API à l'aide de la console, procédez comme suit :
-
Créez ou mettez à jour un déploiement d'API à l'aide de la console, sélectionnez l'option Entièrement nouveau, puis saisissez les détails sur la page Informations de base.
Pour plus d'informations, reportez-vous à Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API et à Mise à jour d'une passerelle d'API.
-
Sélectionnez Suivant pour saisir les détails de chaque routage dans le déploiement d'API sur la page Routages, puis sélectionnez Mise en cache des réponses.
- Sélectionnez l'option Mise en cache pour cette route et indiquez les options de mise en cache des réponses qui s'appliquent à cette route particulière :
- TTL (Time To Live) pour les réponses mises en mémoire cache en secondes : durée pendant laquelle les données mises en mémoire cache sont disponibles dans le serveur de cache pour ce routage particulier.
- Ajout de clé de cache : variables de contexte à ajouter à la clé de cache par défaut pour associer plus étroitement une réponse mise en cache à une demande particulière. Par exemple,
request.headers[X-Username]
. Vous pouvez effectuer une sélection dans une liste de variables de contexte couramment utilisées ou entrer une variable de contexte de votre choix. Ne faites pas précéder la variable de contexte d'un symbole $ ou ne la mettez pas entre accolades (comme vous le feriez si vous ajoutiez la variable de contexte à une URL dans une spécification de déploiement d'API dans un fichier JSON). Pour plus d'informations, reportez-vous à Remarques sur la personnalisation des clés de cache.
- Pour mettre en cache les réponses des demandes qui contiennent un en-tête d'autorisation, ou qui contiennent un en-tête ou un paramètre de requête identifié dans une stratégie d'authentification, sélectionnez l'option Mettre en cache les réponses avec des en-têtes d'autorisation.
Notez que la mise en cache des réponses pour de telles demandes peut compromettre la sécurité des données. Pour plus d'informations, reportez-vous à Remarques sur la mise en cache des réponses pour les demandes contenant des informations d'identification (mise en cache privée).
- Sélectionnez Suivant afin de vérifier les détails saisis pour le déploiement d'API.
- Sélectionnez Créer ou Enregistrer les modifications pour créer ou mettre à jour le déploiement d'API.
- (Facultatif) Vérifiez que l'API a été déployée en l'appelant (reportez-vous à Appel d'une API déployée sur une passerelle d'API).
Modification d'un fichier JSON pour ajouter des stratégies de demande et de réponse de mise en cache des réponses
Pour ajouter une mise en cache de réponse à un routage particulier, vous devez ajouter une stratégie de demande et une stratégie de réponse.
Pour ajouter la demande de mise en cache des réponses et la stratégie de réponse à une spécification de déploiement d'API dans un fichier JSON, procédez comme suit :
-
A l'aide de l'éditeur JSON de votre choix, modifiez la spécification de déploiement d'API existante à laquelle ajouter la mise en cache de réponse ou créez une spécification de déploiement d'API (reportez-vous à Création d'une spécification de déploiement d'API).
Par exemple, la spécification de déploiement d'API de base suivante définit une fonction simple sans serveur Hello World dans OCI Functions en tant que back-end unique :
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
-
Pour spécifier la demande de mise en cache des réponses et la stratégie de réponse qui s'applique à un routage individuel, procédez comme suit :
-
Insérez à la fois une section
requestPolicies
et une sectionresponsePolicies
après la section back-end du routage auquel appliquer la stratégie. Par exemple :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": {}, "responsePolicies": {} } ] }
- Ajoutez la stratégie de demande
responseCacheLookup
suivante à la nouvelle sectionrequestPolicies
pour l'appliquer au routage :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "responseCacheLookup": { "type": "SIMPLE_LOOKUP_POLICY", "isEnabled": true, "isPrivateCachingEnabled": <true|false>, "cacheKeyAdditions": [<list-of-context-variables>] } }, "responsePolicies": {} } ] }
où :
"type": "SIMPLE_LOOKUP_POLICY"
est le type de mise en cache des réponses à implémenter. Seule"SIMPLE_LOOKUP_POLICY"
est actuellement prise en charge."isEnabled": true
indique que la mise en cache des réponses est activée pour le routage. Pour désactiver temporairement la mise en cache des réponses, définissez"isEnabled": false
. Si aucune valeur n'est indiquée, la valeur par défaut esttrue
."isPrivateCachingEnabled": <true|false>
indique si les réponses des demandes contenant un en-tête d'autorisation ou un paramètre d'en-tête ou de requête identifié dans une stratégie d'authentification doivent être mises en mémoire cache. Notez que la mise en cache des réponses pour de telles demandes peut compromettre la sécurité des données. Si elle n'est pas indiquée, la valeur par défaut estfalse
, ce qui indique que les réponses à ces demandes ne sont pas mises en mémoire cache. Pour plus d'informations, reportez-vous à Remarques sur la mise en cache des réponses pour les demandes contenant des informations d'identification (mise en cache privée)."cacheKeyAdditions": [<list-of-context-variables>]
est une liste facultative de variables de contexte, séparées par des virgules, à ajouter à la clé de cache par défaut pour associer plus étroitement une réponse mise en cache à une demande particulière. Par exemple,"cacheKeyAdditions": ["request.headers[Accept]"]
. Ne faites pas précéder la variable de contexte d'un symbole $ ou placez-la entre accolades (comme vous le feriez si vous ajoutiez la variable de contexte à une URL dans une spécification de déploiement d'API dans un fichier JSON). Pour plus d'informations, reportez-vous à Remarques sur la personnalisation des clés de cache.
- Ajoutez la stratégie de réponse
responseCacheStorage
suivante à la nouvelle sectionresponsePolicies
à appliquer au routage :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "responseCacheLookup": { "type": "SIMPLE_LOOKUP_POLICY", "isEnabled": true, "isPrivateCachingEnabled": false, "cacheKeyAdditions": ["request.headers[Accept]"] } }, "responsePolicies": { "responseCacheStorage": { "type": "FIXED_TTL_STORE_POLICY", "timeToLiveInSeconds": <seconds> } } } ] }
où :
"type": "FIXED_TTL_STORE_POLICY"
est le type de cache de réponses dans lequel stocker les réponses. Seule"FIXED_TTL_STORE_POLICY"
est actuellement prise en charge."timeToLiveInSeconds": <seconds>
indique la durée pendant laquelle les données mises en cache sont disponibles sur le serveur de cache pour ce routage particulier. Par exemple,"timeToLiveInSeconds": 300
Par exemple :
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "responseCacheLookup": { "type": "SIMPLE_LOOKUP_POLICY", "isEnabled": true, "isPrivateCachingEnabled": false, "cacheKeyAdditions": ["request.headers[Accept]"] } }, "responsePolicies": { "responseCacheStorage": { "type":"FIXED_TTL_STORE_POLICY", "timeToLiveInSeconds": 300 } } } ] }
-
- Enregistrez le fichier JSON qui contient la spécification de déploiement d'API.
-
Utilisez la spécification de déploiement d'API lorsque vous créez ou mettez à jour un déploiement d'API en :
- spécifiant le fichier JSON dans la console lorsque vous sélectionnez l'option Télécharger une API existante,
- spécifiant le fichier JSON dans une demande adressée à l'API REST d'API Gateway.
Pour plus d'informations, reportez-vous à Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API et à Mise à jour d'une passerelle d'API.
- (Facultatif) Vérifiez que l'API a été déployée en l'appelant (reportez-vous à Appel d'une API déployée sur une passerelle d'API).