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å true tillå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-Language Authorization , 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
- Principavsnitt: inkommande
- Principomfattningar: global, arbetsyta, produkt, API, åtgärd
- Gatewayer: klassisk, v2, förbrukning, lokalt installerad, arbetsyta
Användningsanteckningar
- API Management utför endast cachesökning för HTTP GET-begäranden.
- När du använder
vary-by-query-parameter
kanske du vill deklarera parametrarna i mallen rewrite-uri eller ange attributetcopy-unmatched-params
tillfalse
. 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.
Relaterade principer
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Principuttryck
- Ange eller redigera principer
- Återanvända principkonfigurationer
- Lagringsplats för principfragment
- Principverktyg för Azure API Management
- Skapa principer med Microsoft Copilot i Azure