Önbellekten alma

UYGULANANLAR: Tüm API Management katmanları

Önbellek araması yapmak ve kullanılabilir olduğunda geçerli bir önbelleğe alınmış yanıt döndürmek için ilkeyi cache-lookup kullanın. Bu ilke, yanıt içeriğinin belirli bir süre boyunca statik kaldığı durumlarda uygulanabilir. Yanıtların önbelleğe alınması arka uç web sunucusuna uygulanan bant genişliği ve işleme gereksinimlerini azaltır ve API tüketicilerinin algıladığı gecikme süresini kısaltır.

Not

Bu ilke, ilkeyi önbelleğe almak için karşılık gelen bir Depoya sahip olmalıdır.

Önemli

Yerleşik önbellek geçicidir ve aynı API Management hizmetindeki aynı bölgedeki tüm birimler tarafından paylaşılır.

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. Portal, bu ilkeyi yapılandırmanıza yardımcı olmak için kılavuzlu, form tabanlı bir düzenleyici sağlar. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

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

Özellikler

Öznitelik Açıklama Zorunlu Varsayılan
allow-private-response-caching olarak trueayarlandığında, Yetkilendirme üst bilgisi içeren isteklerin önbelleğe alınmasını sağlar. İlke ifadelerine izin verilir. Hayır false
önbelleğe alma türü Özniteliğin aşağıdaki değerleri arasında seçim yapın:
- internalyerleşik API Management önbelleğini kullanmak için
- externalAzure API Management'ta dış Redis için Azure Cache kullanma bölümünde açıklandığı gibi dış önbelleği kullanmak için,
- prefer-external yapılandırıldıysa dış önbelleği veya başka bir şekilde iç önbelleği kullanmak için.

İlke ifadelerine izin verilmez.
Hayır prefer-external
aşağı akış-önbelleğe alma-türü Bu öznitelik aşağıdaki değerlerden birine ayarlanmalıdır.

- yok - aşağı akış önbelleğe alma işlemine izin verilmez.
- private - aşağı akış özel önbelleğe alma işlemine izin verilir.
- genel - özel ve paylaşılan aşağı akış önbelleğe alma işlemine izin verilir.

İlke ifadelerine izin verilir.
Hayır yok
yeniden doğrulamalı Aşağı akış önbelleğe alma etkinleştirildiğinde, bu öznitelik ağ geçidi yanıtlarında önbellek denetimi yönergesini açar veya kapatır must-revalidate . İlke ifadelerine izin verilir. Hayır true
geliştiriciye göre değişiklik İstekte true yer alan abonelik anahtarına sahip geliştirici hesabı başına yanıtları önbelleğe almak için olarak ayarlayın. İlke ifadelerine izin verilir. Yes false
geliştirici gruplarına göre değişiklik göster true Kullanıcı grubu başına yanıtları önbelleğe almak için olarak ayarlayın. İlke ifadelerine izin verilir. Yes false

Öğeler

Veri Akışı Adı Açıklama Gerekli
üst bilgiye göre değişiklik göster Belirtilen üst bilginin değeri başına ( , gibiAcceptAuthorizationAccept-CharsetAccept-LanguageIf-MatchAccept-EncodingExpectFromHost) yanıtları önbelleğe almaya başlamak için bu öğelerden birini veya daha fazlasını ekleyin. Hayır
vary-by-query-parameter Belirtilen sorgu parametrelerinin değeri başına yanıtları önbelleğe almaya başlamak için bu öğelerden birini veya daha fazlasını ekleyin. Tek veya birden çok parametre girin. Ayırıcı olarak noktalı virgül kullanın. Hayır

Kullanım

Kullanım notları

  • API Management yalnızca HTTP GET istekleri için önbellek araması gerçekleştirir.
  • kullanırken vary-by-query-parameter, rewrite-uri şablonundaki parametreleri bildirmek veya özniteliğini copy-unmatched-params olarak falseayarlamak isteyebilirsiniz. Bu bayrak devre dışı bırakılarak, bildirilmeyen parametreler arka uçtan gönderilir.
  • Bu ilke, ilke bölümünde yalnızca bir kez kullanılabilir.

Örnekler

Karşılık gelen önbellek deposu ilkesine sahip örnek

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

İlke ifadelerini kullanma örneği

Bu örnek, arka uç hizmetinin yönergesi tarafından Cache-Control belirtilen arka uç hizmetinin yanıt önbelleğe alma işlemiyle eşleşen API Management yanıt önbelleğe alma süresinin nasıl yapılandırıldığını gösterir.

<!-- 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;
  }"
 />

Daha fazla bilgi için bkz . İlke ifadeleri ve Bağlam değişkeni.

İlkelerle çalışma hakkında daha fazla bilgi için bkz: