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:
- internalper 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. false
vary-by-developer-groups Impostare su true per memorizzare le risposte nella cache per ogni gruppo utenti. Le espressioni di criteri sono consentite. 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, AuthorizationAccept-EncodingAccept-CharsetExpectFromAccept-Language, . If-MatchHost 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

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'attributo copy-unmatched-params su false. 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.

Per altre informazioni sull'uso dei criteri, vedere: