Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
inboundavsnittet för att söka efter cachelagrade svar och en cachelagringsprincip ioutboundavsnittet 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
durationattribut 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
Relaterat innehåll
- Läs mer om cacheprinciper i API Management
- Konfigurera extern cachelagring med Azure Managed Redis
- Exempel på anpassad cachelagring med avancerade scenarier
- Övervaka API Management-prestanda och cachelagringsmått