Mise en cache des réponses pour améliorer les performances
Découvrez comment utiliser les politiques de demande et de réponse de mise en mémoire cache des réponses pour réduire le nombre de demandes envoyées aux services dorsaux avec la passerelle d'API.
En général, vous devez éviter de charger inutilement les services back-end pour améliorer les performances et réduire les coûts. Une façon de réduire ce chargement consiste à mettre en cache les réponses aux demandes au cas où elles 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 au lieu d'envoyer la demande au service dorsal.
Le service de passerelle d'API peut s'intégrer à un serveur de mémoire 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 de passerelle d'API pour :
- Stockez les données dans le serveur de cache qui ont été retournées par un service dorsal en réponse à une demande initiale.
- Extraire les données précédemment stockées du serveur de cache en réponse à une demande ultérieure similaire à la demande initiale, sans envoyer la demande ultérieure au service dorsal.
Pour configurer une passerelle d'API pour la mise en mémoire cache des réponses, vous devez :
- activer la mise en mémoire cache des réponses sur la passerelle d'API (voir Activation de la mise en mémoire cache des réponses sur une passerelle d'API)
- configurer la mise en mémoire cache des réponses pour des routes individuelles de la passerelle d'API à l'aide de politiques de demande et de réponse (voir Ajout de politiques de demande et de réponse de mise en mémoire cache des réponses)
Vous pouvez configurer la mise en mémoire cache des réponses par :
- En utilisant la console.
- En modifiant un fichier JSON.
Comment fonctionne la mise en mémoire cache des réponses?
Lorsque vous avez activé une passerelle d'API pour la mise en mémoire cache des réponses, celle-ci analyse les demandes des clients d'API vers les routes ayant des politiques de mise en mémoire 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 des réponses sont déjà stockées dans 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 200, 204, 301 ou 410. Notez que la passerelle d'API utilise les politiques de demande et de réponse de mise en mémoire cache de réponse que vous configurez et ignore les en-têtes de contrôle de cache (le cas échéant) dans la demande ou 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 déclenché la réponse (à l'exclusion des paramètres d'interrogation de l'URL)
- la méthode HTTP (une méthode GET, HEAD ou OPTIONS)
- l'OCID du déploiement d'API qui a reçu la demande
Pour mettre en correspondance plus étroitement les réponses en mémoire cache avec des demandes particulières, vous pouvez éventuellement personnaliser les clés de mémoire cache en ajoutant les valeurs d'une ou de plusieurs variables de contexte de la demande à la clé de mémoire cache (voir Notes sur la personnalisation des clés de mémoire cache).
Ce qui se passe ensuite dépend si la passerelle d'API est en mesure de 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, la passerelle d'API transmet la demande au service dorsal. Lorsque le service dorsal retourne 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 mémoire cache comme suit :X-Cache-Status: HIT
indique qu'une clé de mémoire cache correspondante a été trouvée dans le serveur de mémoire cache. La réponse a donc été extraite du serveur de mémoire cache.X-Cache-Status: MISS
indique qu'aucune clé de mémoire cache correspondante n'a été trouvée dans le serveur de mémoire cache. La réponse provient donc du service dorsal.X-Cache-Status: BYPASS
indique que le serveur de mémoire cache n'a pas été vérifié, de sorte que la réponse est venue du service dorsal. Les raisons de ne pas vérifier le serveur de cache incluent des problèmes de communication avec le serveur de cache et des paramètres de configuration qui empêchent l'extraction des réponses pour 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 politique de réponse de transformation d'en-tête pour la supprimer (voir Ajout de politiques de réponse de transformation d'en-tête).
Notes sur 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 vous authentifier auprès du serveur de cache à l'aide des données d'identification enregistrées en tant que clé secrète dans une chambre forte du service de chambre forte.
- Vous pouvez spécifier s'il faut configurer une connexion sécurisée sur TLS (anciennement SSL) entre la passerelle d'API et un serveur de cache compatible TLS, et s'il faut vérifier les certificats TLS. Notez que seuls les certificats signés par les autorités de certification publiques sont actuellement vérifiés.
- Vous pouvez spécifier 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 périmées ne sont pas retourné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 mémoire cache en personnalisant les clés de mémoire cache pour inclure un ou plusieurs paramètres présents dans les URL de demande (voir Notes sur la personnalisation des clés de mémoire cache).
- Vous pouvez spécifier de ne pas mettre en mémoire cache les réponses pour les demandes qui incluent des données d'identification (voir Notes sur la mise en mémoire cache des réponses pour les demandes contenant des données 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 fortement de ne pas réutiliser un serveur de cache existant. À la place, Oracle vous recommande de configurer un nouveau serveur de cache uniquement pour la mise en mémoire cache des réponses de la passerelle d'API et de limiter l'accès au serveur de cache aux passerelles d'API.
Notes sur la mise en mémoire cache des réponses pour les demandes contenant des données d'identification (mise en mémoire cache privée)
Les demandes peuvent inclure des en-têtes d'autorisation qui contiennent les données d'identification pour authentifier un client d'API auprès d'un service dorsal. Les données 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 délicate 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 politique d'authentification identifie un en-tête ou un paramètre d'interrogation dans une demande qui contient un jeton d'accès (voir 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 d'interrogation identifié dans une politique d'authentification indique également que la réponse peut être de nature sensible et ne peut être partagée qu'avec ceux autorisés à la voir.
La mise en mémoire 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 d'interrogation identifié dans une politique d'authentification est appelée "mise en mémoire cache privée". Bien que la mise en cache privée puisse accélérer les réponses à des demandes similaires à l'avenir, elle peut 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, sur une base route par route, vous pouvez activer la mise en cache privée.
Si vous décidez d'activer la mise en mémoire cache privée, nous vous recommandons de personnaliser la clé de cache pour isoler les réponses afin que chaque réponse ne soit retournée qu'à ceux autorisés à la voir. Par exemple :
- Ajoutez la valeur de l'en-tête d'autorisation de demande, ou la valeur de l'en-tête ou du paramètre d'interrogation identifié dans une politique d'authentification, à la clé de cache en tant que variable de contexte d'une table de contexte.
- Si vous avez utilisé des fonctions d'autorisation ou des jetons 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 à partir de la table de contexterequest.auth
. Voir 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 retournée qu'en réponse à une demande ayant une valeur correspondante.
Il vous incombe de spécifier un ajout de clé de cache qui assure un isolement suffisant entre les réponses mises en cache. Voir Notes sur la personnalisation des clés de mémoire cache.
Notes sur 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 déclenché la réponse (à l'exclusion des variables de contexte présentes dans la demande), de la méthode HTTP et de l'OCID du déploiement d'API. Pour mieux mettre en correspondance 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. Si vous décidez d'activer la mise en cache privée pour les demandes qui contiennent des en-têtes d'autorisation, ou qui contiennent un en-tête ou un paramètre d'interrogation identifié dans une politique d'authentification, nous vous recommandons d'ajouter leurs valeurs en tant que variables de contexte à la clé de cache.
Pour spécifier les valeurs de variable de contexte à ajouter à la clé de cache, utilisez le format <context-table-name>.[<key>]
où :
<context-table-name>
est l'une des valeurs suivantes :request.query
,request.headers
ourequest.auth
.<key>
est l'un des éléments suivants :- Un nom de paramètre d'interrogation inclus dans la demande à l'API
- Un nom d'en-tête inclus dans la demande à l'API
- un nom de paramètre d'authentification retourné 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, spécifiezrequest.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 revendication
sub
dans un jeton JWT, spécifiezrequest.auth[sub]
en tant qu'ajout de clé de cache. - Pour ajouter la valeur de l'en-tête
Authorization
à une clé de cache, spécifiezrequest.headers[Authorization]
en tant qu'ajout de clé de cache. - Pour ajouter la valeur d'un jeton d'accès retourné par une fonction d'autorisation et contenu dans un en-tête nommé
X-Custom-Auth
à une clé de cache, spécifiezrequest.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, spécifiezrequest.host
.
Pour plus d'informations sur les variables de contexte, voir Ajout de variables de contexte aux politiques et aux définitions d'élément dorsal HTTP.
Préalables à la mise en cache des réponses
Avant d'activer la mise en mémoire cache des réponses pour une passerelle d'API :
- Un serveur de mémoire cache qui met en oeuvre le protocole RESP (comme Redis ou KeyDB) doit avoir été configuré et doit être disponible.
- Le sous-réseau de la passerelle d'API doit pouvoir accéder au serveur de mémoire cache.
- Le serveur de cache doit être hébergé sur un seul hôte du serveur de cache et non réparti entre plusieurs instances d'un cluster.
- Vous devez avoir déjà stocké les données d'identification pour vous authentifier auprès du serveur de mémoire cache en tant que clé secrète dans une chambre forte du service de chambre forte (voir Création d'une clé secrète dans une chambre forte), et vous devez connaître l'OCID et le numéro de version de la clé secrète. Lorsque vous spécifiez 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 politique pour accorder aux passerelles d'API d'un groupe dynamique l'autorisation d'accéder à la clé secrète du service de chambre forte qui contient les données d'identification à authentifier auprès du serveur de cache (voir Créer une politique pour accorder aux passerelles d'API l'accès aux données d'identification stockées en tant que clés secrètes dans le service de chambre forte).
Activation de la mise en mémoire cache des réponses sur une passerelle d'API
Vous pouvez activer la mise en mémoire 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 mémoire cache des réponses
Pour activer et configurer la mise en mémoire cache des réponses pour une passerelle d'API à l'aide de la console :
-
Créez ou mettez à jour une passerelle d'API à l'aide de la console.
Pour plus d'informations, voir 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 à côté de Mise en cache des réponses et :
- Spécifiez les options du serveur de mémoire cache, comme suit :
-
Hôte : Nom d'hôte du serveur de mémoire cache. Par exemple,
"cache.example.com"
. -
Numéro de port : Numéro de port sur le serveur de mémoire cache. Par exemple :
6379
.
-
Hôte : Nom d'hôte du serveur de mémoire cache. Par exemple,
- Spécifiez les options Données d'identification du serveur de mémoire cache, comme suit :
- Chambre forte : Nom de la chambre forte dans le service de chambre forte qui contient les données d'identification pour la connexion au serveur de mémoire cache.
- Clé secrète de la chambre forte : Nom de la clé secrète dans la chambre forte spécifiée qui contient les données d'identification pour la connexion au serveur de mémoire cache.
- Numéro de version de la clé secrète de la chambre forte : Version de la clé secrète à utiliser.
- Spécifiez les options de connexion au serveur de mémoire cache, comme suit :
- Utiliser SSL/TLS dans les demandes : Indique si le serveur de mémoire cache est activé pour TLS et, par conséquent, s'il faut configurer une connexion sécurisée entre la passerelle d'API et le serveur de mémoire cache sur TLS (anciennement SSL).
- Vérifier le certificat SSL/TLS : Indique si la passerelle d'API vérifie le certificat TLS du serveur de mémoire cache (anciennement SSL). Notez que seuls les certificats signés par les autorités de certification publiques sont actuellement vérifiés.
- Temporisation de la connexion : Durée d'attente avant d'abandonner une tentative de connexion au serveur de mémoire cache, en millisecondes. Si la passerelle d'API ne peut pas se connecter au serveur de cache pendant ce temps, la passerelle d'API 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 sur le serveur de cache pour une réutilisation future potentielle.
- Temporisation de lecture : Durée d'attente avant d'abandonner une tentative de lecture des données à partir du serveur de mémoire cache, en millisecondes. Si la passerelle d'API ne peut pas extraire les données du serveur de mémoire cache pendant ce temps, elle envoie plutôt une demande au service dorsal.
- Temporisation d'envoi : Durée d'attente avant d'abandonner une tentative d'écriture de données sur le serveur de mémoire 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 mémoire cache pour une réutilisation future potentielle.
- Spécifiez les options du serveur de mémoire 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 mémoire cache des réponses
Pour activer et configurer la mise en mémoire cache des réponses pour une passerelle d'API à l'aide de l'interface de ligne de commande et d'un fichier JSON :
-
Dans votre éditeur JSON préféré, créez un fichier de configuration de cache dans le 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 mémoire cache des réponses doit être activée. Si elle n'est pas définie, la valeur par défaut est"type" : "NONE"
, ce qui indique que la mise en mémoire cache des réponses est désactivée."host" : "<cache-server-hostname>"
est le nom d'hôte du serveur de mémoire cache. Par exemple,"host" : "cache.example.com"
."port" : <port-number>
est le numéro de port sur le serveur de mémoire cache. Par exemple,"port" : 6379
."authenticationSecretId" : "<secret-ocid>"
est l'OCID de la clé secrète définie dans une chambre forte du service de chambre forte qui contient les données d'identification pour la connexion au serveur de mémoire 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 mémoire cache est activé pour TLS et, par conséquent, s'il faut configurer une connexion sécurisée entre la passerelle d'API et le serveur de mémoire cache sur TLS (anciennement SSL). Si aucune valeur n'est 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 mémoire cache. Notez que seuls les certificats signés par les autorités de certification publiques sont actuellement vérifiés. Si aucune valeur n'est définie, la valeur par défaut estfalse
"connectTimeoutInMs" : <milliseconds>
indique le délai d'attente avant d'abandonner une tentative de connexion au serveur de mémoire cache, en millisecondes. Si la passerelle d'API ne peut pas se connecter au serveur de cache pendant ce temps, la passerelle d'API 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 sur le serveur de cache pour une réutilisation future potentielle. 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 d'abandonner une tentative de lecture des données à partir du serveur de mémoire cache, en millisecondes. Si la passerelle d'API ne peut pas extraire les données du serveur de mémoire cache pendant ce temps, elle envoie plutôt une demande au service dorsal. 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 d'abandonner une tentative d'écriture de données sur le serveur de mémoire cache, en millisecondes. Si la passerelle d'API ne peut pas envoyer de données au serveur de mémoire cache dans ce délai, les réponses ne sont pas mises en mémoire cache pour une réutilisation future potentielle. 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 de la mémoire cache avec le nom de votre choix. Par exemple,
resp-cache-config.json
- Utilisez le fichier de configuration de la mémoire 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 la mise en mémoire cache des réponses activée, suivez les instructions de l'interface de ligne de commande sous Création d'une passerelle d'API et réglez le paramètre
--response-cache-details
au nom et à l'emplacement du fichier de configuration de la mémoire 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 mémoire cache des réponses ou de modifier les paramètres de mise en mémoire cache des réponses, suivez les instructions de l'interface de ligne de commande sous Mise à jour d'une passerelle d'API et réglez le paramètre
--response-cache-details
au nom et à l'emplacement du fichier de configuration de la mémoire 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 la mise en mémoire cache des réponses activée, suivez les instructions de l'interface de ligne de commande sous Création d'une passerelle d'API et réglez le paramètre
Ajout de politiques de demande et de réponse en mémoire cache de réponses
Vous pouvez ajouter des politiques de demande et de réponse de mise en mémoire cache des réponses aux spécifications de déploiement d'API à l'aide de la console ou en modifiant un fichier JSON. Notez que vous devez activer la mise en mémoire cache des réponses sur une passerelle d'API pour que les politiques de demande et de réponse entrent en vigueur.
Utilisation de la console pour ajouter des politiques de demande et de réponse de mise en mémoire cache de réponses
Pour ajouter des politiques de demande et de réponse de mise en mémoire cache de réponses à une spécification de déploiement d'API à l'aide de la console :
-
Créez ou mettez à jour un déploiement d'API à l'aide de la console, sélectionnez l'option À partir de zéro et entrez les détails dans la page Informations de base.
Pour plus d'informations, voir 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 entrer les détails de chaque route du déploiement d'API dans la page Routes et sélectionnez Mise en mémoire cache des réponses.
- Sélectionnez l'option Mise en mémoire cache pour cette route et spécifiez les options de mise en mémoire cache des réponses qui s'appliquent à cette route particulière :
- TTL (Time To Live) pour les réponses en mémoire cache en secondes : Durée de disponibilité des données en mémoire cache dans le serveur de mémoire cache pour cette route particulière.
- Ajouts de clé en mémoire cache : Une ou plusieurs variables de contexte à ajouter à la clé de mémoire cache par défaut pour associer plus étroitement une réponse en mémoire 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 pas précéder la variable de contexte d'un symbole $ ou la placer entre accolades (comme vous le feriez si vous ajoutez la variable de contexte à une URL dans une spécification de déploiement d'API dans un fichier JSON). Pour plus d'informations, voir Notes sur la personnalisation des clés de mémoire cache.
- Si vous voulez mettre en mémoire cache les réponses pour les demandes qui contiennent un en-tête d'autorisation, ou qui contiennent un en-tête ou un paramètre d'interrogation identifié dans une politique d'authentification, sélectionnez l'option Mettre en mémoire cache les réponses avec des en-têtes d'autorisation.
Notez que la mise en mémoire cache des réponses pour de telles demandes peut compromettre la sécurité des données. Pour plus d'informations, voir Notes sur la mise en mémoire cache des réponses pour les demandes contenant des données d'identification (mise en mémoire cache privée).
- Sélectionnez Suivant pour vérifier les détails que vous avez entrés 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 avec succès en l'appelant (voir Appel d'une API déployée sur une passerelle d'API).
Modification d'un fichier JSON pour ajouter une demande de mise en mémoire cache de réponses et des politiques de réponse
Pour ajouter la mise en mémoire cache des réponses à une route particulière, vous devez ajouter à la fois une politique de demande et une politique de réponse.
Pour ajouter une demande de mise en mémoire cache de réponses et une politique de réponse à une spécification de déploiement d'API dans un fichier JSON :
-
Dans votre éditeur JSON préféré, modifiez la spécification de déploiement d'API existante à laquelle vous souhaitez ajouter la mise en mémoire cache de réponse ou créez une spécification de déploiement d'API (voir 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 simple fonction sans serveur Hello World du service des fonctions pour OCI en tant qu'élément dorsal 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 mémoire cache de réponses et la politique de réponse qui s'appliquent à une route individuelle :
-
Ajoutez à la fois une section
requestPolicies
et une sectionresponsePolicies
après la section dorsale pour la route à laquelle appliquer la politique. Par exemple :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": {}, "responsePolicies": {} } ] }
- Ajoutez la politique de demande
responseCacheLookup
suivante à la nouvelle sectionrequestPolicies
pour l'application à la route :{ "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 mémoire cache des réponses à mettre en oeuvre. Seule"SIMPLE_LOOKUP_POLICY"
est actuellement prise en charge."isEnabled": true
indique que la mise en mémoire cache des réponses est activée pour la route. Si vous voulez désactiver temporairement la mise en mémoire cache des réponses, définissez"isEnabled": false
. Si vous ne spécifiez pas de valeur, la valeur par défaut esttrue
."isPrivateCachingEnabled": <true|false>
indique s'il faut mettre en mémoire cache les réponses pour les demandes qui contiennent un en-tête d'autorisation, ou qui contiennent un en-tête ou un paramètre d'interrogation identifié dans une politique d'authentification. Notez que la mise en mémoire cache des réponses pour de telles demandes peut compromettre la sécurité des données. Si elle n'est pas spécifiée, la valeur par défaut estfalse
, ce qui indique que les réponses pour ces demandes ne sont pas mises en mémoire cache. Pour plus d'informations, voir Notes sur la mise en mémoire cache des réponses pour les demandes contenant des données d'identification (mise en mémoire 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 mémoire cache par défaut pour associer plus étroitement une réponse en mémoire cache à une demande particulière. Par exemple,"cacheKeyAdditions": ["request.headers[Accept]"]
. Ne pas précéder la variable de contexte d'un symbole $ ou la placer entre accolades (comme vous le feriez si vous ajoutez la variable de contexte à une URL dans une spécification de déploiement d'API dans un fichier JSON). Pour plus d'informations, voir Notes sur la personnalisation des clés de mémoire cache.
- Ajoutez la politique de réponse
responseCacheStorage
suivante à la nouvelle sectionresponsePolicies
à appliquer à la route :{ "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 mémoire 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 en mémoire cache sont disponibles dans le serveur de mémoire cache pour cette route particulière. 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 contenant la spécification de déploiement d'API.
-
Utilisez comme suit 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 Charger une API existante.
- En spécifiant le fichier JSON dans une demande à l'API REST du service Passerelle d'API.
Pour plus d'informations, voir 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 avec succès en l'appelant (voir Appel d'une API déployée sur une passerelle d'API).