Obtention à partir du cache

S’APPLIQUE À : tous les niveaux de Gestion des API

Utilisez la stratégie cache-lookup pour effectuer une recherche dans le cache et renvoyer une réponse mise en cache valide si elle est disponible. Cette stratégie peut être appliquée dans les cas où le contenu de la réponse reste statique pendant un certain temps. La mise en cache de la réponse réduit les besoins en bande passante et en calcul imposés par le serveur web principal et limite la latence perçue par les consommateurs de l’API.

Notes

Cette stratégie doit avoir une stratégie Store to cache correspondante.

Important

Le cache intégré est volatile et partagé par toutes les unités de la même région dans le même service de gestion des API.

Notes

Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. Pour vous aider à configurer cette stratégie, le portail fournit un éditeur guidé basé sur des formulaires. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.

Instruction de la stratégie

<cache-lookup vary-by-developer="true | false" vary-by-developer-groups="true | false" caching-type="prefer-external | external | internal" downstream-caching-type="none | private | public" must-revalidate="true | false" allow-private-response-caching="@(expression to evaluate)">
  <vary-by-header>Accept</vary-by-header>
  <!-- should be present in most cases -->
  <vary-by-header>Accept-Charset</vary-by-header>
  <!-- should be present in most cases -->
  <vary-by-header>Authorization</vary-by-header>
  <!-- should be present when allow-private-response-caching is "true"-->
  <vary-by-header>header name</vary-by-header>
  <!-- optional, can be repeated -->
  <vary-by-query-parameter>parameter name</vary-by-query-parameter>
  <!-- optional, can be repeated -->
</cache-lookup>

Attributs

Attribut Description Obligatoire Default
allow-private-response-caching Lorsque l’attribut est défini sur true, permet la mise en cache des requêtes qui contiennent un en-tête d’autorisation. Les expressions de stratégie sont autorisées. Non false
caching-type Choisissez entre les valeurs suivantes de l’attribut :
- internal pour utiliser le cache Gestion des API intégré,
- external pour utiliser le cache externe (voir - ,
- prefer-external pour utiliser un cache externe (si configuré) ou un cache interne sinon.

Les expressions de stratégie ne sont pas autorisées.
Non prefer-external
downstream-caching-type Cet attribut doit avoir l’une des valeurs suivantes.

- none : la mise en cache en aval n’est pas autorisée.
- private : la mise en cache privée en aval est autorisée.
- public : la mise en cache privée et partagée en aval est autorisée.

Les expressions de stratégie sont autorisées.
Non Aucun
must-revalidate Lorsque la mise en cache en aval est activée, cet attribut active ou désactive la directive de contrôle de cache must-revalidate dans les réponses de la passerelle. Les expressions de stratégie sont autorisées. Non true
vary-by-developer Définissez la valeur true pour mettre en cache les réponses par compte de développeur possédant une true incluse dans la demande. Les expressions de stratégie sont autorisées. Oui false
vary-by-developer-groups Attribut défini sur true pour mettre en cache des réponses par true. Les expressions de stratégie sont autorisées. Oui false

Éléments

Nom Description Obligatoire
vary-by-header Ajoutez un ou plusieurs de ces éléments pour commencer à mettre en cache les réponses par valeur d’en-tête spécifié, par exemple, Accept, Accept-Charset, Accept-Encoding, Accept-Language, Authorization, Expect, From, Host ou If-Match. Non
vary-by-query-parameter Ajoutez un ou plusieurs de ces éléments pour commencer à mettre en cache les réponses par valeur de paramètre de requête spécifié. Entrez un ou plusieurs paramètres. Utilisez un point-virgule comme séparateur. Non

Usage

Notes d’utilisation

  • Gestion des API effectue uniquement une recherche de cache pour les requêtes HTTP GET.
  • Lorsque vous utilisez vary-by-query-parameter, vous pouvez déclarer les paramètres dans le modèle rewrite-uri ou affecter à l’attribut copy-unmatched-params la valeur false. En désactivant cet indicateur, les paramètres qui ne sont pas déclarés sont envoyés au back-end.
  • Cette stratégie ne peut être employée qu’une seule fois dans une section de stratégie.

Exemples

Exemple avec la stratégie cache-store correspondante

<policies>
    <inbound>
        <base />
        <cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none" must-revalidate="true" caching-type="internal" >
            <vary-by-query-parameter>version</vary-by-query-parameter>
        </cache-lookup>
    </inbound>
    <outbound>
        <cache-store duration="seconds" />
        <base />
    </outbound>
</policies>

Exemple utilisant des expressions de stratégie

Cet exemple montre comment configurer la durée de mise en cache des réponses de Gestion des API qui correspond à la mise en cache de la réponse du service principal, comme spécifié par la directive Cache-Control du service principal.

<!-- The following cache policy snippets demonstrate how to control API Management response cache duration with Cache-Control headers sent by the backend service. -->

<!-- Copy this snippet into the inbound section -->
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="public" must-revalidate="true" >
  <vary-by-header>Accept</vary-by-header>
  <vary-by-header>Accept-Charset</vary-by-header>
</cache-lookup>

<!-- Copy this snippet into the outbound section. Note that cache duration is set to the max-age value provided in the Cache-Control header received from the backend service or to the default value of 5 min if none is found  -->
<cache-store duration="@{
    var header = context.Response.Headers.GetValueOrDefault("Cache-Control","");
    var maxAge = Regex.Match(header, @"max-age=(?<maxAge>\d+)").Groups["maxAge"]?.Value;
    return (!string.IsNullOrEmpty(maxAge))?int.Parse(maxAge):300;
  }"
 />

Pour plus d’informations, consultez les pages Expressions de stratégie et Variable de contexte.

Pour plus d’informations sur l’utilisation des stratégies, consultez :