Dela via


Översikt över cachelagring

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

Konfigurera cachelagring i Azure API Management för att lagra och hämta svar på API-begäranden och relaterad information. Genom att lagra svar från serverdelstjänster kan API Management hantera efterföljande identiska begäranden direkt från cachen, vilket minskar behovet av att anropa serverdelstjänsten upprepade gånger. Cachelagring kan förbättra API-prestanda, minska belastningen på serverdelen och förbättra den övergripande upplevelsen för kunder som anropar API:er via API Management.

Den här artikeln beskriver alternativen för cachelagring i API Management och belyser viktiga scenarier och konfigurationsöverväganden.

Viktigt!

Cachelagring kräver både en cachelagringstjänst – antingen en intern cache som distribueras automatiskt som en del av API Management-tjänsten eller en extern cache som distribueras av dig – och konfiguration av cachelagringsprinciper för att ange hur cachelagring ska tillämpas på API-begäranden.

Alternativ för cachelagringstjänst

Azure API Management tillhandahåller följande alternativ för cachelagringstjänsten för att uppfylla olika prestanda- och arkitekturkrav.

  • Intern (inbyggd): Den interna (inbyggda) cachen etableras automatiskt på alla API Management-tjänstnivåer (förutom förbrukningsnivån ). Den interna cacheimplementeringen skiljer sig mellan de klassiska nivåerna (Developer, Basic, Standard och Premium) och v2-nivåerna (Basic v2, Standard v2 och Premium v2). Den inbyggda cachen på v2-nivåerna ger bättre tillförlitlighet. Läs mer om cachelagring med den inbyggda cachen.

  • Extern cache: Om du vill ha bättre prestanda och beständighet kan du välja att konfigurera en extern Redis-kompatibel cache, till exempel Azure Managed Redis, för användning med valfri API Management-tjänstnivå eller gateway. Läs mer om hur du konfigurerar en extern cache med Azure Managed Redis.

I följande tabell jämförs funktionerna i det interna och externa cacheminnet.

Capability Inre External
Automatisk etablering och hantering ✔️
Tillagd kostnad ✔️
Anpassad konfiguration ✔️
Tillgänglighet på alla nivåer och gatewayer Inte tillgängligt på förbrukningsnivå eller lokalt installerad gateway ✔️
Regional lagring Cache tillhandahålls i samma region som API Management-instansen och delas av skalningsenheterna.

I en distribution i flera regioner har varje region sin egen cache.
Beror på kundens önskemål
Beständig lagring Beständiga på v2-nivåer.

På klassiska nivåer (Developer, Basic, Standard och Premium) bevaras inte cacheinnehållet när tjänstuppdateringar sker.
✔️
Gränser per nivå Cachestorleken varierar beroende på tjänstnivå Inte begränsat
Delad åtkomst av flera API Management-instanser ✔️
Stöd för semantisk cachelagring ✔️
Stöd för förinläsning och rensning av data ✔️

Cachelagringsscenarier

Använd cachelagring i Azure API Management för scenarier som de i följande tabell.

Scenario Description Cachetyp Beteende med förlust av cachetillgänglighet eller anslutning
Optimera klientupplevelsen Påskynda repetitiv bearbetning av begäranden för klienter. Intern eller extern Serverdelen hanterar begäranden och måste hantera fullständig belastning om cachen inte är tillgänglig.
Kontrollera kostnader och backendskalning Minska serverdelsbelastningen och kostnaderna när serverdelen inte skalas för full trafik. External Beror på cache- och tjänstkonfiguration. Rekommendation: Välj en cachetjänstnivå med högsta tillförlitlighet och övervaka prestanda.
Metadatalager Använd cachelagringsvärdet för att lagra godtyckliga data i cacheminnet. Intern eller extern Beror på cache- och tjänstkonfiguration.

Considerations:

  • I alla cachelagringsscenarion bör du överväga möjligheten att cachetillgänglighet eller anslutning går förlorad. API Management använder ett "bästa möjliga" tillvägagångssätt för cachetillgänglighet. Om en konfigurerad cache inte är tillgänglig sker cachemissar och som standard fortsätter begäranden till serverdelstjänsten.

  • På den klassiska API Management-nivån är den interna cachen instabil och bevaras inte mellan tjänstuppdateringar. Under en tjänstuppdatering rensas den interna cachen i en gradvis process som omfattar upp till 50% cacheminnet åt gången.

    Anmärkning

    Du kan konfigurera tjänstuppdateringsinställningar, inklusive en underhållsperiod för uppdateringar, för att minimera potentiell kundpåverkan, till exempel förlust av den interna cachen.

  • Om du konfigurerar en extern cache kan den vara beständig, men du ansvarar för att säkerställa tillgänglighet och anslutning.

  • Om du vill skydda serverdelstjänsten från trafiktoppar som kan överbelasta den när en cache inte är tillgänglig, konfigurerar du en hastighetsbegränsningsprincip (hastighetsbegränsning eller hastighetsgräns per nyckel) omedelbart efter någon cacheuppslagningsprincip.

Cachelagringsprinciper

Konfigurera cachelagringsprinciper för att styra hur API-svar cachelagras och hämtas i Azure API Management.

  • Som standard i cachelagringsprinciper använder API Management en extern cache om den konfigureras och faller tillbaka till den inbyggda cachen annars.

  • API Management tillhandahåller cachelagringsprinciper i par, enligt följande tabell. I en principdefinition konfigurerar du en cacheuppslagningsprincip i inbound avsnittet för att söka efter cachelagrade svar och en cachelagringsprincip i outbound avsnittet för att lagra lyckade svar i cacheminnet.

Policies Description Usage
cache-lookup / cache-store – Hämta ett svar från cacheminnet
– Lagra ett svar i cachebegäran
– Används för att hämta ett fullständigt API-svar från cachen för en identisk GET begäran
cache-sökvärde / cache-lagringsvärde – Hämta ett specifikt värde från cacheminnet
– Lagra ett specifikt värde i cacheminnet
– Används för anpassade cachelagringsscenarier med specifika cachenycklar
azure-openai-semantic-cache-lookup / azure-openai-semantic-cache-store – Kontrollera om det finns ett semantiskt liknande svar i cacheminnet för en Azure OpenAI API-begäran
– Lagra ett svar för en Azure OpenAI API-begäran
– Används för att hämta liknande svar på API-begäranden om slutförande av Azure OpenAI-chatt
llm-semantic-cache-lookup / llm-semantic-cache-store – Kontrollera om det finns ett semantiskt liknande svar i cacheminnet för en LLM API-begäran
– Lagra ett svar för en LLM API-begäran
– Används för att hämta liknande svar på API-begäranden om slutförande av LLM-chatt

Tips/Råd

  • Principer för att lagra poster i cacheminnet innehåller ett duration attribut för att ange hur länge en cachelagrad post ska sparas.
  • Använd cache-remove-value för att ta bort ett specifikt värde som identifieras av nyckeln från cacheminnet.

Exempel på cachelagringsprincip

Följande är grundläggande exempel på cachelagringsprinciper i API Management. Fler exempel finns i referensartiklarna för cachelagringsprincip .

Cachelagring av svar

Cachelagra fullständigt API-svar i intern cache för att betjäna identiska förfrågningar utan serverdelsanrop. I det här exemplet lagrar cachen svar i sju dagar.

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

Cachelagring av värde

Cachelagrar specifika datavärden för återanvändning mellan flera begäranden.

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

Hastighetsbegränsningsskydd

Som en bästa praxis, kombinera cacheuppslagning med hastighetsbegränsningar för att skydda bakgrundstjänster.

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

Säkerhetsfrågor

  • Känsliga data: Undvik cachelagring av svar som innehåller känslig eller personlig information
  • Cachenycklar: Se till att cachenycklar inte exponerar känslig information i loggar eller diagnostik
  • Åtkomstkontroll: Extern cache kräver korrekt nätverkssäkerhet och åtkomstkontroller
  • Kryptering: Använd TLS/SSL för anslutningar till externa cacheinstanser