Condividi tramite


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. 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, 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

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'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 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.

Per ulteriori informazioni sull'utilizzo dei criteri, vedere: