Freigeben über


Aus Cache abrufen

GILT FÜR: Alle API Management-Ebenen

Verwenden Sie die cache-lookup-Richtlinie zum Durchführen einer Cachesuche und im Erfolgsfall zum Zurückgeben einer gültigen Antwort aus dem Cache. Diese Richtlinie kann in Fällen angewendet werden, in denen sich der Inhalt von Antworten über längere Zeit nicht ändert. Das Zwischenspeichern von Antworten senkt die Bandbreitennutzung und die Prozessoranforderungen auf dem Back-End-Webserver und verringert die Latenz für API-Consumer.

Hinweis

Diese Richtlinie setzt das Vorhandensein einer entsprechenden Richtlinie In Cache ablegen voraus.

Wichtig

Der integrierte Cache ist flüchtig und wird von allen Einheiten in derselben Region desselben API Management-Diensts gemeinsam genutzt.

Hinweis

Legen Sie die Elemente und untergeordneten Elemente einer Richtlinie in der Reihenfolge fest, die in der Richtlinienanweisung angegeben ist. Das Portal unterstützt Sie bei der Konfiguration dieser Richtlinie durch einen formularbasierten, angeleiteten Editor. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.

Richtlinienanweisung

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

Attribute

Attribut BESCHREIBUNG Erforderlich Standard
allow-private-response-caching Bei Festlegung auf true wird das Zwischenspeichern von Anforderungen erlaubt, die einen Autorisierungsheader enthalten. Richtlinienausdrücke sind zulässig. Nein false
caching-type Wählen Sie aus den folgenden Attributwerten:
- internal zur Verwendung des integrierten API Management-Caches
- external zur Verwendung des externen Caches (siehe - ),
- prefer-external zur Verwendung des externen Caches (sofern konfiguriert); andernfalls wird der interne Cache verwendet.

Richtlinienausdrücke sind nicht zulässig.
Nein prefer-external
downstream-caching-type Dieses Attribut muss auf einen der folgenden Werte festgelegt werden.

– none: Downstreamzwischenspeicherung ist unzulässig.
– private: Private Downstreamzwischenspeicherung ist zulässig.
– public: Private und gemeinsam genutzte Downstreamzwischenspeicherung ist zulässig.

Richtlinienausdrücke sind zulässig.
Nein Keine
must-revalidate Wenn die Downstreamzwischenspeicherung aktiviert ist, aktiviert oder deaktiviert dieses Attribut die must-revalidate-Cachesteuerungsanweisung in Gatewayantworten. Richtlinienausdrücke sind zulässig. Nein true
vary-by-developer Legen Sie den Parameter auf true fest, um Antworten pro Entwicklerkonto zwischenzuspeichern, das den in der Anforderung enthaltenen true besitzt. Richtlinienausdrücke sind zulässig. Ja false
vary-by-developer-groups Legen Sie diese Option auf true fest, um Antworten true zwischenzuspeichern. Richtlinienausdrücke sind zulässig. Ja false

Elemente

Name BESCHREIBUNG Erforderlich
vary-by-header Fügen Sie mindestens eines dieser Elemente hinzu, um das Zwischenspeichern von Antworten pro Wert des angegebenen Headers zu starten, z. B. Accept, Accept-Charset, Accept-Encoding, Accept-Language, Authorization, Expect, From, Host, If-Match. Nein
vary-by-query-parameter Fügen Sie mindestens eines dieser Elemente hinzu, um das Zwischenspeichern von Antworten pro Wert der angegebenen Abfrageparameter zu starten. Geben Sie einen oder mehrere Parameter an. Verwenden Sie Semikolons als Trennzeichen. Nein

Verwendung

Hinweise zur Verwendung

  • API Management führt die Cachesuche nur für HTTP GET-Anforderungen durch.
  • Bei Verwendung von vary-by-query-parameter empfiehlt es sich gegebenenfalls, die Parameter in der Vorlage „rewrite-uri“ zu deklarieren oder das Attribut copy-unmatched-params auf false festzulegen. Wenn Sie dieses Flag deaktivieren, werden nicht deklarierte Parameter an das Back-End gesendet.
  • Diese Richtlinie kann nur einmal in einem Richtlinienabschnitt verwendet werden.

Beispiele

Beispiel mit entsprechender Cachespeicherrichtlinie

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

Beispiel für die Verwendung von Richtlinienausdrücken

Dieses Beispiel zeigt die Konfiguration der Dauer des API Management-Antwortcachings. Diese entspricht dem Zwischenspeichern von Antworten des Back-End-Diensts wie durch die Cache-Control-Anweisung des Back-End-Diensts angegeben.

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

Weitere Informationen finden Sie unter Richtlinienausdrücke und Kontextvariable.

Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier: