Recupera dalla cache
SI APPLICA A: Tutti i livelli di Gestione API
Usare il criterio cache-lookup
per eseguire una ricerca nella cache e restituire una risposta valida memorizzata nella cache, se disponibile. Questo criterio può essere applicato nei casi in cui il contenuto della risposta rimane statico in un periodo di tempo. La memorizzazione delle risposte nella cache riduce la larghezza di banda e i requisiti di elaborazione imposti sul server Web back-end e riduce la latenza percepita dagli utenti delle API.
Nota
Questo criterio deve essere associato a un criterio Archivia nella cache corrispondente.
Importante
La cache predefinita è volatile e viene condivisa da tutte le unità nella stessa area nello stesso servizio Gestione API.
Nota
Impostare gli elementi e gli elementi figlio del criterio nell'ordine specificato nell'istruzione del criterio. Per configurare questo criterio, il portale fornisce un editor guidato basato su moduli. Altre informazioni su come impostare o modificare i criteri di API Management.
Istruzione del criterio
<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>
Attributi
Attributo | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
allow-private-response-caching | Se impostato su true , consente la memorizzazione nella cache delle richieste contenenti un'intestazione di autorizzazione. Le espressioni di criteri sono consentite. |
No | false |
caching-type | Scegliere tra i valori dell'attributo seguenti: - internal per usare la cache di Gestione API predefinita,- external per usare la cache esterna, come descritto in Usare una cache Redis esterna in Gestione API di Azure,- prefer-external per usare la cache esterna se configurata o quella interna in caso contrario.Le espressioni di criteri non sono consentite. |
No | prefer-external |
downstream-caching-type | Questo attributo deve essere impostato su uno dei valori seguenti. - none - Non è consentita la memorizzazione nella cache downstream. - private - È consentita la memorizzazione nella cache downstream privata. - public - È consentita la memorizzazione nella cache downstream privata e condivisa. Le espressioni di criteri sono consentite. |
No | Nessuno |
must-revalidate | Quando è abilitata la memorizzazione nella cache downstream, questo attributo attiva o disattiva la direttiva di controllo di memorizzazione della cache must-revalidate nelle risposte del gateway. Le espressioni di criteri sono consentite. |
No | true |
vary-by-developer | Impostare su true per memorizzare nella cache le risposte per ogni account sviluppatore proprietario della chiave di sottoscrizione inclusa nella richiesta. Le espressioni di criteri sono consentite. |
Sì | false |
vary-by-developer-groups | Impostare su true per memorizzare le risposte nella cache per ogni gruppo utenti. Le espressioni di criteri sono consentite. |
Sì | false |
Elementi
Nome | Descrizione | Richiesto |
---|---|---|
vary-by-header | Aggiungere uno o più di questi elementi per avviare la memorizzazione nella cache delle risposte per valore dell'intestazione specificata, ad esempio Accept , Accept-Charset , Accept-Encoding , Accept-Language , Authorization , Expect , From , Host , If-Match . |
No |
vary-by-query-parameter | Aggiungere uno o più di questi elementi per avviare la memorizzazione nella cache delle risposte per valore dei parametri di query specificati. Immettere un singolo parametro o più parametri. Usare un punto e virgola (;) come separatore. | No |
Utilizzo
- Sezioni del criterio: inbound
- Ambiti del criterio: globale, area di lavoro, prodotto, API, operazione
- Gateway: classico, v2, consumo, self-hosted, area di lavoro
Note sull'utilizzo
- Gestione API esegue la ricerca nella cache solo per le richieste HTTP GET.
- Quando si usa
vary-by-query-parameter
, è possibile dichiarare i parametri nel modello rewrite-uri o impostare l'attributocopy-unmatched-params
sufalse
. Disattivando questo flag, i parametri non dichiarati vengono inviati al back-end.
- Questo criterio può essere usato una sola volta in una sezione di criteri.
Esempi
Esempio con i criteri cache-store corrispondenti
<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>
Esempio con espressioni di criteri
Questo esempio illustra come configurare la durata della memorizzazione nella cache delle risposte di Gestione API corrispondente alla memorizzazione nella cache delle risposte del servizio back-end come specificato dalla direttiva Cache-Control
del servizio back-end.
<!-- 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;
}"
/>
Per altre informazioni, vedere Espressioni di criteri e Variabile di contesto.
Criteri correlati
Contenuto correlato
Per ulteriori informazioni sull'utilizzo dei criteri, vedere:
- Esercitazione: trasformare e proteggere l'API
- Informazioni di riferimento sui criteri per un elenco completo delle istruzioni dei criteri e delle relative impostazioni
- Espressioni di criteri
- Impostare o modificare criteri
- Riutilizzare le configurazioni dei criteri
- Repository dei frammenti di criteri
- Creare criteri usando Microsoft Copilot in Azure