Dela via


Hämta från cache

GÄLLER FÖR: Alla API Management-nivåer

cache-lookup Använd principen för att utföra cachesökning och returnera ett giltigt cachelagrat svar när det är tillgängligt. Den här principen kan tillämpas i fall där svarsinnehållet förblir statiskt under en tidsperiod. Cachelagring av svar minskar bandbredds- och bearbetningskraven för serverdelswebbservern och minskar fördröjningen som uppfattas av API-konsumenter.

Kommentar

Den här principen måste ha en motsvarande store-till-cache-princip .

Viktigt!

Den inbyggda cachen är instabil och delas av alla enheter i samma region i samma API Management-tjänst.

Kommentar

Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. För att hjälpa dig att konfigurera den här principen tillhandahåller portalen en guidad, formulärbaserad redigerare. Läs mer om hur du anger eller redigerar API Management-principer.

Principuttryck

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

Attribut

Attribut beskrivning Obligatoriskt Standardvärde
allow-private-response-caching När värdet är inställt på truetillåter cachelagring av begäranden som innehåller ett auktoriseringshuvud. Principuttryck tillåts. Nej false
cachelagringstyp Välj mellan följande värden för attributet:
- internal för att använda den inbyggda API Management-cachen,
- external för att använda den externa cachen enligt beskrivningen i Använda en extern Azure Cache for Redis i Azure API Management,
- prefer-external för att använda extern cache om det är konfigurerat eller internt cacheminne på annat sätt.

Principuttryck tillåts inte.
Nej prefer-external
downstream-caching-type Det här attributet måste anges till något av följande värden.

– ingen – nedströmscachelagring tillåts inte.
– privat – underordnad privat cachelagring tillåts.
– offentlig – privat och delad nedströmscachelagring tillåts.

Principuttryck tillåts.
Nej inget
must-revalidate När nedströmscachelagring är aktiverat aktiverar eller inaktiverar must-revalidate det här attributet cachekontrolldirektivet i gatewaysvar. Principuttryck tillåts. Nej true
vary-by-developer Ange till true cachesvar per utvecklarkonto som äger prenumerationsnyckeln som ingår i begäran. Principuttryck tillåts. Ja false
vary-by-developer-groups Ange till true cachesvar per användargrupp. Principuttryck tillåts. Ja false

Element

Name beskrivning Obligatoriskt
vary-by-header Lägg till ett eller flera av dessa element för att börja cachelagra svar per värde för angivet huvud, till exempel Accept, Accept-Charset, Accept-Encoding, Accept-LanguageAuthorization, Expect, From, , Host. If-Match Nej
vary-by-query-parameter Lägg till ett eller flera av dessa element för att börja cachelagra svar per värde för angivna frågeparametrar. Ange en eller flera parametrar. Använd semikolon som avgränsare. Nej

Förbrukning

Användningsanteckningar

  • API Management utför endast cachesökning för HTTP GET-begäranden.
  • När du använder vary-by-query-parameterkanske du vill deklarera parametrarna i mallen rewrite-uri eller ange attributet copy-unmatched-params till false. Genom att inaktivera den här flaggan skickas parametrar som inte deklareras till serverdelen.
  • Den här principen kan bara användas en gång i ett principavsnitt.

Exempel

Exempel med motsvarande cachelagringsprincip

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

Exempel med principuttryck

Det här exemplet visar hur du konfigurerar cachelagring av API Management-svar som matchar svarscachelagringen för serverdelstjänsten enligt vad som anges i serverdelstjänstens Cache-Control direktiv.

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

Mer information finns i Principuttryck och Kontextvariabel.

Mer information om hur du arbetar med principer finns i: