Freigeben über


Übersicht über Caching

GILT FÜR: Alle API Management-Ebenen

Konfigurieren Sie die Zwischenspeicherung in Azure API Management, um Antworten auf API-Anforderungen und zugehörige Informationen zu speichern und abzurufen. Durch das Speichern von Antworten aus Back-End-Diensten kann die API-Verwaltung nachfolgende identische Anforderungen direkt aus dem Cache verarbeiten, wodurch die Notwendigkeit reduziert wird, den Back-End-Dienst wiederholt aufzurufen. Die Zwischenspeicherung kann die API-Leistung verbessern, die Back-End-Auslastung reduzieren und die Gesamterfahrung von Kunden verbessern, die APIs über die API-Verwaltung aufrufen.

In diesem Artikel werden die Zwischenspeicherungsoptionen in der API-Verwaltung erläutert und wichtige Szenarien und Konfigurationsaspekte erläutert.

Von Bedeutung

Die Zwischenspeicherung erfordert sowohl einen Zwischenspeicherungsdienst – entweder einen internen Cache, der automatisch als Teil des API-Verwaltungsdiensts bereitgestellt wird, als auch einen externen Cache, der von Ihnen bereitgestellt wird, und die Konfiguration von Zwischenspeicherungsrichtlinien , um anzugeben, wie die Zwischenspeicherung auf API-Anforderungen angewendet werden soll.

Optionen für den Cachedienst

Azure API Management bietet die folgenden Optionen für den Cachedienst, um unterschiedliche Leistungs- und Architekturanforderungen zu erfüllen.

  • Interner (integrierter) Cache: Der interne (integrierte) Cache wird automatisch in allen API-Verwaltungsdienstebenen (mit Ausnahme der Verbrauchsstufe ) bereitgestellt. Die interne Cacheimplementierung unterscheidet sich zwischen den klassischen Ebenen (Entwickler, Basic, Standard und Premium) und den v2-Ebenen (Basic v2, Standard v2 und Premium v2). Der integrierte Cache in den v2-Ebenen bietet eine verbesserte Zuverlässigkeit. Erfahren Sie mehr über das Zwischenspeichern mit dem integrierten Cache.

  • Externer Cache: Um die Leistung und Persistenz zu verbessern, konfigurieren Sie optional einen externen rediskompatiblen Cache, z. B. azure Managed Redis, für die Verwendung mit einer beliebigen API-Verwaltungsdienstebene oder einem Gateway. Erfahren Sie mehr über das Einrichten eines externen Caches mit azure Managed Redis.

In der folgenden Tabelle werden die Funktionen des internen und externen Caches verglichen.

Fähigkeit Intern External
Automatische Bereitstellung und Verwaltung ✔️
Zusätzliche Kosten ✔️
Benutzerdefinierte Konfiguration ✔️
Verfügbarkeit in allen Ebenen und Gateways Nicht in Verbrauchsebene oder selbst-gehostetem Gateway verfügbar ✔️
Regionaler Speicher Cache, der in derselben Region wie API-Verwaltungsinstanz bereitgestellt wird und zwischen Skalierungseinheiten gemeinsam genutzt wird.

In einer Bereitstellung mit mehreren Regionen verfügt jede Region über einen eigenen Cache.
Hängt von der Kundenpräferenz ab
Beständiger Speicher Beständig in v2-Ebenen.

In klassischen Ebenen (Developer, Basic, Standard und Premium) werden Cacheinhalte nicht beibehalten, wenn Dienstupdates stattfinden.
✔️
Grenzwerte pro Ebene Die Cachegröße variiert je nach Dienstebene. Nicht beschränkt
Freigegebener Zugriff durch mehrere API-Verwaltungsinstanzen ✔️
Unterstützung für die semantische Zwischenspeicherung ✔️
Unterstützung für Das Vorabladen und Löschen von Daten ✔️

Zwischenspeicherungsszenarien

Verwenden Sie die Zwischenspeicherung in Azure API Management für Szenarien wie die in der folgenden Tabelle.

Scenario Description Cachetyp Verhalten bei Verlust der Cacheverfügbarkeit oder Konnektivität
Optimieren der Clienterfahrung Beschleunigen Sie die wiederholte Anforderungsverarbeitung für Kunden. Intern oder extern Back-End dient Anforderungen und muss die vollständige Last verarbeiten, wenn der Cache nicht verfügbar ist.
Steuerung von Kosten und Back-End-Skalierung Reduzieren Sie die Back-End-Auslastung und -Kosten, wenn das Back-End nicht für den vollständigen Datenverkehr skaliert wird. External Hängt von der Cache- und Dienstkonfiguration ab. Empfehlung: Wählen Sie eine Cachedienstebene mit höchster Zuverlässigkeit aus, und überwachen Sie die Leistung.
Metadatenspeicher Verwenden Sie cache-store-value , um beliebige Daten im Cache zu speichern. Intern oder extern Hängt von der Cache- und Dienstkonfiguration ab.

Überlegungen:

  • Berücksichtigen Sie in jedem Zwischenspeicherungsszenario die Möglichkeit des Verlusts der Cacheverfügbarkeit oder Konnektivität. Die API-Verwaltung verwendet einen "best effort"-Ansatz für die Cacheverfügbarkeit. Wenn kein konfigurierter Cache verfügbar ist, treten Cachefehler auf, und standardmäßig werden Anforderungen weiterhin an den Back-End-Dienst übergeben.

  • In den klassischen Ebenen der API-Verwaltung ist der interne Cache veränderlich und wird nicht über Dienstupdates hinweg beibehalten. Während eines Dienstupdates wird der interne Cache in einem schrittweisen Prozess gelöscht, der bis zu 50% des Caches gleichzeitig umfasst.

    Hinweis

    Sie können Dienstupdateeinstellungen, einschließlich eines Wartungsfensters für Updates, konfigurieren, um potenzielle Kundenauswirkungen wie z. B. den Verlust des internen Caches zu minimieren.

  • Wenn Sie einen externen Cache konfigurieren, kann er dauerhaft sein, aber Sie sind dafür verantwortlich, die Verfügbarkeit und Konnektivität sicherzustellen.

  • Um den Back-End-Dienst vor Datenverkehrsspitzen zu schützen, die ihn möglicherweise überladen, wenn ein Cache nicht verfügbar ist, konfigurieren Sie eine Richtlinie zur Begrenzung der Rate (Rate-Limit oder Rate-Limit-by-Key) unmittelbar nach jeder Cache-Nachschlagerichtlinie.

Zwischenspeicherungsrichtlinien

Konfigurieren Sie Zwischenspeicherungsrichtlinien, um zu steuern, wie API-Antworten zwischengespeichert und in Azure API Management abgerufen werden.

  • Standardmäßig wird in Zwischenspeichernrichtlinien für API Management ein externer Cache verwendet, falls konfiguriert, und ein Failback auf den integrierten Cache durchgeführt.

  • Die API-Verwaltung stellt Zwischenspeicherungsrichtlinien in Paaren bereit, wie in der folgenden Tabelle dargestellt. Konfigurieren Sie in einer Richtliniendefinition eine Cache-Nachschlagerichtlinie im inbound Abschnitt, um nach zwischengespeicherten Antworten zu suchen, und eine Cachespeicherrichtlinie im outbound Abschnitt, um erfolgreiche Antworten im Cache zu speichern.

Politik Description Usage
Cache-Nachschlagevorgang / Cachespeicher – Abrufen einer Antwort aus dem Cache
– Speichern einer Antwort in der Cacheanforderung
– Dient zum Abrufen einer vollständigen API-Antwort aus dem Cache für eine identische GET Anforderung
Cache-Nachschlagewert / Cachespeicherwert – Abrufen eines bestimmten Werts aus dem Cache
– Speichern eines bestimmten Werts im Cache
– Verwendung für benutzerdefinierte Cacheszenarien mit bestimmten Cacheschlüsseln
Azure-openai-semantic-cache-lookup / azure-openai-semantic-cache-store – Überprüfen, ob eine semantisch ähnliche Antwort im Cache für eine Azure OpenAI-API-Anforderung vorhanden ist
– Speichern einer Antwort für eine Azure OpenAI-API-Anforderung
– Dient zum Abrufen ähnlicher Antworten auf Azure OpenAI-Chat-Abschluss-API-Anforderungen
llm-semantic-cache-lookup / llm-semantic-cache-store – Überprüfen, ob eine semantisch ähnliche Antwort im Cache für eine LLM-API-Anforderung vorhanden ist
– Speichern einer Antwort für eine LLM-API-Anforderung
– Wird zum Abrufen ähnlicher Antworten auf LLM-Chat-Vervollständigungs-API-Anforderungen verwendet

Tipp

  • Richtlinien zum Speichern von Einträgen im Cache enthalten ein duration Attribut, um anzugeben, wie lange ein zwischengespeicherter Eintrag beibehalten wird.
  • Verwenden Sie cache-remove-value , um einen bestimmten Wert zu entfernen, der vom Schlüssel aus dem Cache identifiziert wird.

Beispiele für Caching-Richtlinien

Im Folgenden sind grundlegende Beispiele für Zwischenspeicherungsrichtlinien in der API-Verwaltung aufgeführt. Weitere Beispiele finden Sie in den Referenzartikeln zur Zwischenspeicherungsrichtlinie .

Zwischenspeichern von Antworten

Vollständige API-Antwort im internen Cache zwischenspeichern, um identische Anforderungen ohne Back-End-Aufrufe zu verarbeiten. In diesem Beispiel speichert der Cache Antworten sieben Tage lang.

<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="604800" />
        <base />
    </outbound>
</policies>

Wertzwischenspeicherung

Zwischenspeichern bestimmter Datenwerte für die Wiederverwendung über mehrere Anforderungen hinweg.

<policies>
    <inbound>
        <cache-lookup-value key="user-preferences" default-value="none" variable-name="preferences" />
        <choose>
            <when condition="@(context.Variables["preferences"].ToString() == "none")">
                <!-- Load preferences from backend -->
                <send-request mode="new" response-variable-name="prefsResponse">
                    <set-url>https://backend.api/user/preferences</set-url>
                </send-request>
                <cache-store-value key="user-preferences" value="@(((IResponse)context.Variables["prefsResponse"]).Body.As<string>())" duration="1800" />
            </when>
        </choose>
    </inbound>
</policies>

Schutz durch Ratenbegrenzung

Kombinieren Sie als bewährte Methode die Cachesuche mit der Ratebegrenzung zum Schutz von Back-End-Diensten.

<policies>
    <inbound>
        <cache-lookup-value key="@("data-" + context.Request.IpAddress)" variable-name="cachedData" />
        <choose>
            <when condition="@(!context.Variables.ContainsKey("cachedData"))">
                <rate-limit calls="10" renewal-period="60" />
                <!-- Proceed to backend -->
            </when>
            <otherwise>
                <!-- Return cached data without rate limiting -->
                <return-response>
                    <set-body>@((string)context.Variables["cachedData"])</set-body>
                </return-response>
            </otherwise>
        </choose>
    </inbound>
</policies>

Sicherheitsüberlegungen

  • Vertrauliche Daten: Vermeiden des Zwischenspeicherns von Antworten, die vertrauliche oder persönliche Informationen enthalten
  • Cacheschlüssel: Sicherstellen, dass Cacheschlüssel keine vertraulichen Informationen in Protokollen oder Diagnosen verfügbar machen
  • Zugriffssteuerung: Für den externen Cache sind geeignete Netzwerksicherheits- und Zugriffssteuerungen erforderlich.
  • Verschlüsselung: Verwenden von TLS/SSL für Verbindungen mit externen Cacheinstanzen