Ophalen uit cache

VAN TOEPASSING OP: Alle API Management-lagen

Gebruik het cache-lookup beleid om cachezoekacties uit te voeren en een geldig antwoord in de cache te retourneren wanneer dit beschikbaar is. Dit beleid kan worden toegepast in gevallen waarin antwoordinhoud gedurende een bepaalde periode statisch blijft. Antwoordcaching vermindert de bandbreedte- en verwerkingsvereisten voor de back-endwebserver en verlaagt de latentie die API-gebruikers ervaren.

Notitie

Dit beleid moet een overeenkomend Archief hebben voor cachebeleid .

Belangrijk

De ingebouwde cache is vluchtig en wordt gedeeld door alle eenheden in dezelfde regio in dezelfde API Management-service.

Notitie

Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Om u te helpen dit beleid te configureren, biedt de portal een begeleide editor op basis van formulieren. Meer informatie over het instellen of bewerken van API Management-beleid.

Beleidsinstructie

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

Kenmerken

Kenmerk Beschrijving Vereist Standaardinstelling
privé-antwoord-caching toestaan Wanneer deze optie is ingesteld true, kunt u aanvragen die een autorisatieheader bevatten, opslaan in cache. Beleidsexpressies zijn toegestaan. Nee false
caching-type Kies tussen de volgende waarden van het kenmerk:
- internal om de ingebouwde API Management-cache te gebruiken,
- externalom de externe cache te gebruiken zoals beschreven in Een externe Azure Cache voor Redis gebruiken in Azure API Management,
- prefer-external om externe cache te gebruiken als deze anders is geconfigureerd of interne cache.

Beleidsexpressies zijn niet toegestaan.
Nee prefer-external
downstream-caching-type Dit kenmerk moet worden ingesteld op een van de volgende waarden.

- geen - downstreamcaching is niet toegestaan.
- privé- en downstream-privécaching is toegestaan.
- openbaar- privé- en gedeelde downstreamcaching is toegestaan.

Beleidsexpressies zijn toegestaan.
Nee Geen
moet opnieuw worden gevalideerd Wanneer downstreamcaching is ingeschakeld, schakelt dit kenmerk de instructie cachebeheer must-revalidate in gatewayantwoorden in of uit. Beleidsexpressies zijn toegestaan. Nee true
variëren per ontwikkelaar Ingesteld op true antwoorden in de cache per ontwikkelaarsaccount dat eigenaar is van de abonnementssleutel die is opgenomen in de aanvraag. Beleidsexpressies zijn toegestaan. Ja false
variëren per ontwikkelaar-groepen Ingesteld op true het opslaan van antwoorden in de cache per gebruikersgroep. Beleidsexpressies zijn toegestaan. Ja false

Elementen

Name Beschrijving Vereist
vary-by-header Voeg een of meer van deze elementen toe om reacties in de cache op te slaan per waarde van de opgegeven header, zoals Accept, Accept-CharsetAccept-Encoding, , Accept-Language, Authorization, Expect, From, , . HostIf-Match Nee
vary-by-query-parameter Voeg een of meer van deze elementen toe om reacties in de cache op te slaan per waarde van opgegeven queryparameters. Voer één of meerdere parameters in. Gebruik puntkomma's als scheidingsteken. Nee

Gebruik

Gebruiksnotities

  • API Management voert alleen cachezoekacties uit voor HTTP GET-aanvragen.
  • vary-by-query-parameterWanneer u deze gebruikt, kunt u de parameters in de herschrijf-URI-sjabloon declareren of het kenmerk instellen op falsecopy-unmatched-params . Door deze vlag te deactiveren, worden parameters die niet zijn gedeclareerd, verzonden naar de back-end.
  • Dit beleid kan slechts eenmaal worden gebruikt in een beleidssectie.

Voorbeelden

Voorbeeld met bijbehorend cachearchiefbeleid

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

Voorbeeld van het gebruik van beleidsexpressies

In dit voorbeeld ziet u hoe u de reactiecacheduur van API Management configureert die overeenkomt met de reactiecache van de back-endservice, zoals opgegeven in de instructie van Cache-Control de back-endservice.

<!-- 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;
  }"
 />

Zie Beleidsexpressies en contextvariabele voor meer informatie.

Zie voor meer informatie over het werken met beleid: