Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
SI APPLICA A: Tutti i livelli di Gestione API
Configurare la memorizzazione nella cache in Gestione API di Azure per archiviare e recuperare risposte alle richieste API e alle informazioni correlate. Archiviando le risposte dai servizi back-end, Gestione API può gestire richieste identiche successive direttamente dalla cache, riducendo la necessità di chiamare ripetutamente il servizio back-end. La memorizzazione nella cache può migliorare le prestazioni dell'API, ridurre il carico back-end e migliorare l'esperienza complessiva dei clienti che chiamano le API tramite Gestione API.
Questo articolo illustra le opzioni di memorizzazione nella cache in Gestione API ed evidenzia gli scenari chiave e le considerazioni sulla configurazione.
Importante
La memorizzazione nella cache richiede sia un servizio di memorizzazione nella cache, ovvero una cache interna distribuita automaticamente come parte del servizio Gestione API o una cache esterna distribuita dall'utente, sia la configurazione dei criteri di memorizzazione nella cache per specificare come applicare la memorizzazione nella cache alle richieste API.
Opzioni del servizio di memorizzazione nella cache
Gestione API di Azure offre le opzioni del servizio di memorizzazione nella cache seguenti per soddisfare requisiti di prestazioni e architettura diversi.
Interno (integrato): la cache interna (integrata) viene fornita automaticamente in tutti i livelli di servizio di API Management, fatta eccezione per il livello Consumption. L'implementazione della cache interna è diversa tra i livelli classici (Developer, Basic, Standard e Premium) e i livelli v2 (Basic v2, Standard v2 e Premium v2). La cache predefinita nei livelli v2 offre un'affidabilità avanzata. Scopri di più sulla memorizzazione nella cache con la cache predefinita.
Cache esterna : per migliorare le prestazioni e la persistenza, configurare facoltativamente una cache esterna compatibile con Redis, ad esempio Redis gestita di Azure, da usare con qualsiasi livello di servizio o gateway di Gestione API. Altre informazioni sulla configurazione di una cache esterna con Azure Managed Redis.
Nella tabella seguente vengono confrontate le funzionalità della cache interna ed esterna.
| Capability | Interno | External |
|---|---|---|
| Provisioning e gestione automatici | ✔️ | ❌ |
| Costo aggiunto | ❌ | ✔️ |
| Configurazione personalizzata | ❌ | ✔️ |
| Disponibilità in tutti i livelli e i gateway | Non disponibile nel livello A consumo o nel gateway self-hosted | ✔️ |
| Archiviazione regionale | Cache fornita nella stessa area dell'istanza di Gestione API e condivisa tra le unità di scala. In una distribuzione in più aree , ogni area ha la propria cache. |
Dipende dalla preferenza del cliente |
| Archiviazione permanente | Persistente nei livelli v2. Nei livelli classici (Developer, Basic, Standard e Premium) i contenuti della cache non vengono mantenuti quando si eseguono gli aggiornamenti del servizio. |
✔️ |
| Limiti per livello | Le dimensioni della cache variano in base al livello di servizio | Non limitato |
| Accesso condiviso da più istanze di Gestione API | ❌ | ✔️ |
| Supporto per la memorizzazione nella cache semantica | ❌ | ✔️ |
| Supporto per il precaricamento e la pulizia dei dati | ❌ | ✔️ |
Scenari di memorizzazione nella cache
Usare la memorizzazione nella cache in Gestione API di Azure per scenari come quelli nella tabella seguente.
| Scenario | Description | Tipo di cache | Comportamento con perdita di disponibilità o connettività della cache |
|---|---|---|---|
| Ottimizzare l'esperienza client | Velocizzare l'elaborazione delle richieste ripetitive per i client. | Interno o esterno | Il back-end gestisce le richieste e deve gestire il caricamento completo se la cache non è disponibile. |
| Controllo dei costi e della scalabilità back-end | Ridurre il carico del backend e i costi quando il backend non è scalato per gestire tutto il traffico. | External | Dipende dalla configurazione della cache e del servizio. Raccomandazione: selezionare un livello di servizio della cache con affidabilità più elevata e monitorare le prestazioni. |
| Archivio metadati | Usare cache-store-value per archiviare dati arbitrari nella cache. | Interno o esterno | Dipende dalla configurazione della cache e del servizio. |
Considerations:
In qualsiasi scenario di memorizzazione nella cache considerare la possibilità di perdita di disponibilità o connettività della cache. Gestione API usa un approccio "Massimo impegno" per la disponibilità della cache. Se una cache configurata non è disponibile, si verificano errori di cache e per impostazione predefinita le richieste continuano al servizio back-end.
Nei livelli classici di Gestione API la cache interna è volatile e non viene mantenuta tra gli aggiornamenti del servizio. Durante un aggiornamento del servizio, la cache interna viene cancellata in un processo graduale che comporta fino a 50% della cache alla volta.
Annotazioni
È possibile configurare le impostazioni di aggiornamento del servizio, inclusa una finestra di manutenzione per gli aggiornamenti, per ridurre al minimo i potenziali impatti dei clienti, ad esempio la perdita della cache interna.
Se si configura una cache esterna, può essere persistente, ma si è responsabili della disponibilità e della connettività.
Per proteggere il servizio back-end da picchi di traffico che potrebbero sovraccaricarlo quando una cache non è disponibile, configurare criteri di limitazione della velocità (limite di velocità o limite di velocità per chiave) immediatamente dopo qualsiasi criterio di ricerca della cache.
Criteri di memorizzazione nella cache
Configurare i criteri di memorizzazione nella cache per controllare il modo in cui le risposte api vengono memorizzate nella cache e recuperate in Gestione API di Azure.
Per impostazione predefinita nei criteri di memorizzazione nella cache, Gestione API utilizza una cache esterna se configurata, altrimenti utilizza la cache interna predefinita.
Gestione API fornisce criteri di memorizzazione nella cache in coppie, come illustrato nella tabella seguente. In una definizione di criteri configurare un criterio di ricerca della cache nella
inboundsezione per verificare la presenza di risposte memorizzate nella cache e un criterio dell'archivio cache nellaoutboundsezione per archiviare le risposte riuscite nella cache.
| Policies | Description | Usage |
|---|---|---|
| cache-lookup / cache-store | - Recuperare una risposta dalla cache - Archiviare una risposta nella richiesta di cache |
- Usare per recuperare una risposta API completa dalla cache per una richiesta identica GET |
| valore-ricerca-cache / valore-memorizzazione-cache | - Recuperare un valore specifico dalla cache - Archiviare un valore specifico nella cache |
- Usare per scenari di memorizzazione nella cache personalizzati con chiavi della cache specifiche |
| azure-openai-semantic-cache-lookup / azure-openai-semantic-cache-store | - Controllare se esiste una risposta semanticamente simile nella cache per una richiesta api OpenAI di Azure - Archiviare una risposta per una richiesta API OpenAI di Azure |
- Utilizzare per recuperare risposte simili generate dalle richieste API di completamento chat di Azure OpenAI |
| llm-semantic-cache-lookup / llm-semantic-cache-store | - Controllare se esiste una risposta semanticamente simile nella cache per una richiesta API LLM - Archiviare una risposta per una richiesta API LLM |
- Usare per recuperare risposte simili alle richieste API di completamento chat LLM |
Suggerimento
- I criteri per archiviare le voci nella cache includono un
durationattributo per specificare per quanto tempo una voce memorizzata nella cache viene mantenuta. - Usare cache-remove-value per rimuovere un valore specifico identificato dalla chiave dalla cache.
Esempi di criteri di memorizzazione nella cache
Di seguito sono riportati esempi di base di criteri di memorizzazione nella cache in Gestione API. Per altri esempi, vedere gli articoli di riferimento sui criteri di memorizzazione nella cache .
Memorizzazione nella cache delle risposte
Memorizzare nella cache interna la risposta completa dell'API per gestire richieste identiche senza chiamate back-end. In questo esempio la cache archivia le risposte per sette giorni.
<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>
Memorizzazione nella cache dei valori
Memorizzare nella cache valori di dati specifici per il riutilizzo tra più richieste.
<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>
Protezione della limitazione del tasso
Come procedura consigliata, combinare la ricerca nella cache con la limitazione della frequenza per proteggere i servizi back-end.
<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>
Considerazioni sulla sicurezza
- Dati sensibili: evitare la memorizzazione nella cache di risposte contenenti informazioni riservate o personali
- Chiavi della cache: assicurarsi che le chiavi della cache non espongono informazioni riservate nei log o nella diagnostica
- Controllo di accesso: la cache esterna richiede controlli di accesso e sicurezza di rete appropriati
- Crittografia: usare TLS/SSL per le connessioni a istanze della cache esterne
Contenuti correlati
- Altre informazioni sui criteri di cache in Gestione API
- Configurare la memorizzazione nella cache esterna con Redis gestito di Azure
- Esempi di memorizzazione nella cache personalizzati con scenari avanzati
- Monitorare le prestazioni di Gestione API e memorizzare nella cache le metriche