Recupera dalla cache
Usare i criteri per eseguire la cache-lookup
ricerca nella cache e restituire una risposta memorizzata nella cache valida, 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 dei criteri. Per configurare questo criterio, il portale fornisce un editor guidato basato su moduli. Altre informazioni su come impostare o modificare i criteri di Gestione API.
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 | Default |
---|---|---|---|
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 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 per true 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 , Authorization Accept-Encoding Accept-Charset Expect From Accept-Language , . If-Match Host |
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: dedicato, a consumo, self-hosted
Note sull'utilizzo
- Gestione API esegue solo la ricerca nella cache 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 di archiviazione cache 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 Gestione API durata della memorizzazione nella cache delle risposte corrispondente alla memorizzazione nella cache delle risposte del servizio back-end come specificato dalla direttiva del Cache-Control
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 altre informazioni sull'uso 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