Condividi tramite


cache-lookup

SI APPLICA A: Tutti i livelli di Gestione API

Il criterio cache-store memorizza nella cache le risposte in base alle impostazioni specificate per la cache. 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 Recupera dalla 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-store duration="seconds" cache-response="true | false" />

Attributi

Attributo Descrizione Richiesto Valore predefinito
durata Durata (TTL, Time-To-Live) delle voci memorizzate nella cache, in secondi. Le espressioni di criteri sono consentite. N/D
cache-response Impostare su true per memorizzare nella cache la risposta HTTP corrente. Se l'attributo viene omesso, vengono memorizzate nella cache solo le risposte HTTP con il codice di stato 200 OK. Le espressioni di criteri sono consentite. NO false

Utilizzo

Note sull'utilizzo

  • Gestione API memorizza nella cache solo le risposte alle richieste HTTP GET.
  • Questo criterio può essere usato una sola volta in una sezione di criteri.
  • È consigliabile configurare criteri di limite di frequenza (o criteri rate-limit-by-key ) immediatamente dopo qualsiasi ricerca nella cache. Ciò consente di evitare che il servizio back-end venga sovraccaricato se la cache non è disponibile.

Esempi

Esempio con i criteri di ricerca della cache corrispondenti

Questo esempio illustra come usare i cache-store criteri insieme a un cache-lookup criterio per memorizzare nella cache le risposte nella cache di Gestione API predefinita.

Nota

Aggiungi una policy di limite di velocità (o politica limite di velocità per chiave ) dopo la ricerca della cache per aiutare a limitare il numero di chiamate e prevenire sovraccarichi sul servizio backend nel caso in cui la cache non sia disponibile.

<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>
        <rate-limit calls="10" renewal-period="60" />
    </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>
 <rate-limit calls="10" renewal-period="60" />

<!-- 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: