PopulateCache politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Önbelleğe alınan değerlerin çalışma zamanında nasıl yazılması gerektiğini yapılandırır.

Önbelleği Doldur politikası, kısa süreli genel amaçlı önbelleğe giriş yazmak için tasarlanmıştır. Arama Önbelleği politikası (önbellek girişlerini okumak için) ve Önbelleği Geçersiz Kılma politikası (girişleri geçersiz kılmak için) ile birlikte kullanılır.

Arka uç kaynaklarının yanıtlarını önbelleğe almak için Yanıt Önbelleği politikasına bakın.

Öğe referansı

Aşağıda, bu politikada yapılandırabileceğiniz öğeler listelenmiştir.

<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1">
    <DisplayName>Populate Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <TimeoutInSeconds>300</TimeoutInSeconds>
    </ExpirySettings>
    <Source>flowVar</Source>
</PopulateCache>

<PopulateCache> özellikleri

Aşağıdaki tabloda, tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içerebilir. Bu değer 255 karakterden uzun olamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için <DisplayName> öğesini kullanın.

Yok Gerekli
continueOnError

Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

Politikayı devre dışı bırakmak için false olarak ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanmaz.

true İsteğe bağlı
async

Bu özellik kullanımdan kaldırıldı.

false Kullanımdan kaldırıldı

<DisplayName> öğesi

Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi çıkarırsanız politikanın name özelliğinin değeri kullanılır.

Varlık İsteğe bağlı
Tür Dize

<CacheKey> öğesi

Önbellekte depolanan bir veri parçasına yönelik benzersiz bir işaretçi yapılandırır.

Önbellek anahtarları 2 KB boyutuyla sınırlıdır.

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

Varsayılan:

Yok

Bulunma:

Gerekli

Tür:

Yok

<CacheKey>, önbellekte depolanan her veri parçasının adını oluşturur.

Çalışma zamanında <KeyFragment> değerlerinin başına <Scope> öğe değeri veya <Prefix> değeri eklenir. Örneğin, aşağıdaki durum UserToken__apiAccessToken__<value_of_client_id> önbellek anahtarıyla sonuçlanır:

<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>

<CacheKey> öğesini <Prefix> ve <Scope> ile birlikte kullanırsınız. Daha fazla bilgi için Önbellek anahtarlarıyla çalışma bölümüne bakın.

<CacheResource> öğesi

İletilerin depolanacağı önbelleği belirtir.

Bu politika (ve ilgili LookupCache ile InValidateCache politikalarınız) dahil edilen paylaşılan önbelleği kullanıyorsa bu öğeyi tamamen atlayın.

<CacheResource>cache_to_use</CacheResource>

Varsayılan:

Yok

Bulunma:

İsteğe bağlı

Tür:

Dize

Önbellekleri yapılandırma hakkında daha fazla bilgi edinmek için Ortam önbelleği oluşturma ve düzenleme başlıklı makaleye bakın.

<CacheKey>/<KeyFragment> öğesi

Önbellek anahtarına eklenmesi gereken bir değeri belirterek istekleri önbelleğe alınan yanıtlarla eşleştirmek için bir ad alanı oluşturur.

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

Varsayılan:

Yok

Bulunma:

İsteğe bağlı

Tür:

Yok

Bu bir anahtar (sağladığınız statik ad) veya bir değer (bir değişkene başvurularak ayarlanan dinamik giriş) olabilir. Belirtilen tüm parçalar (ve ön ek) birlikte önbellek anahtarını oluşturmak için birleştirilir.

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

<KeyFragment> öğesini <Prefix> ve <Scope> ile birlikte kullanırsınız. Daha fazla bilgi için Önbellek anahtarlarıyla çalışma bölümüne bakın.

Özellikler

Özellik Tür Varsayılan Gerekli Açıklama
referans dize Hayır

Değerin alınacağı değişken. Bu öğe değişmez değer içeriyorsa kullanılmamalıdır.

<CacheKey>/<Prefix> öğesi

Önbellek anahtarı ön eki olarak kullanılacak bir değer belirtir.

<Prefix>prefix_string</Prefix>

Varsayılan:

Yok

Bulunma:

İsteğe bağlı

Tür:

Dize

<Scope> ile numaralanmış bir değer yerine kendi değerinizi belirtmek istediğinizde <Scope> yerine bu değeri kullanın. Tanımlanırsa <Prefix>, önbelleğe yazılan girişlerin önbellek anahtarı değerinin başına ekler. <Prefix> öğesi değeri, <Scope> öğe değerini geçersiz kılar.

<Prefix> öğesini <CacheKey> ve <Scope> ile birlikte kullanırsınız. Daha fazla bilgi için Önbellek anahtarlarıyla çalışma bölümüne bakın.

<ExpirySettings> öğesi

Bir önbellek girişinin süresinin ne zaman dolacağını belirtir. Mevcut olduğunda <TimeoutInSeconds> hem <TimeOfDay> hem de <ExpiryDate> değerini geçersiz kılar.

<ExpirySettings>
  <!-- use exactly one of the following child elements -->
  <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
  <ExpiryDate ref="date_variable">expiration_date</ExpiryDate>
  <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
</ExpirySettings>

Varsayılan:

Yok

Bulunma:

Gerekli

Tür:

Yok

<ExpirySettings> alt öğeleri

Tam olarak bir tane alt öğe kullanın. Aşağıdaki tabloda <ExpirySettings> alt öğelerinin açıklaması verilmektedir:

Alt Öğe Açıklama
<TimeoutInSeconds>

Bir önbellek girişinin süresinin dolacağı saniye sayısıdır.

<ExpirySettings>
  <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds>
</ExpirySettings>

Bu öğe, kullanımdan kaldırılan TimeoutInSec öğesinin yerini alır.

<ExpiryDate>

Bir önbellek girişinin süresinin dolacağı tarihi belirtir. mm-dd-yyyy biçiminde bir dize belirtin.

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

Belirtilen tarih geçmişteyse politika maksimum geçerlilik süresini önbelleğe alınan girişe uygular. Bu maksimum süre 30 gündür.

<TimeOfDay>

Bir önbellek girişinin gün içindeki süresinin dolacağı saati belirtir. HH:mm:ss biçiminde bir dize belirtin. Burada HH, 24 saatlik biçimde saati UTC saat diliminde temsil eder. Örneğin 14:30:00, öğleden sonra 2:30 olduğu anlamına gelir.

<ExpirySettings>
  <TimeOfDay ref="var-containing-time">expiry</TimeOfDay>
</ExpirySettings>

Olası alt öğelerden yalnızca birini belirtmelisiniz. Birden çok öğe belirtirseniz öncelik sırası şu şekildedir:TimeoutInSeconds, ExpiryDate, TimeOfDay.

<ExpirySettings> öğesinin yukarıdaki alt öğelerinin her birinde, alt öğede isteğe bağlı ref özelliğini belirtirseniz politika, son geçerlilik değerini adlandırılmış bağlam değişkeninden alır. Değişken tanımlı değilse politika, alt öğenin değişmez metin değerini kullanır.

<Scope> öğesi

<CacheKey> öğesinde bir <Prefix> öğesi sağlanmadığında önbellek anahtarı için bir önek oluşturmak üzere kullanılan numaralandırma.

<Scope>scope_enumeration</Scope>

Varsayılan:

"Özel"

Bulunma:

İsteğe bağlı

Tür:

Dize

<Scope> ayarı, <Scope> değerinin başına eklenen bir önbellek anahtarı belirler. Örneğin, kapsam Exclusive olarak ayarlandığında önbellek anahtarı aşağıdaki biçimi alır:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ ]

<CacheKey> özelliğinde bir <Prefix> öğesi varsa <Scope> öğe değerinin yerini alır. Geçerli değerler, aşağıdaki numaralandırmaları içerir.

<Scope> öğesini <CacheKey> ve <Prefix> ile birlikte kullanırsınız. Daha fazla bilgi için Önbellek anahtarlarıyla çalışma bölümüne bakın.

Kabul edilebilir değerler

Global

Önbellek anahtarı, ortamda dağıtılan tüm API proxy'leri arasında paylaşılır. Önbellek anahtarı başına orgName __ envName __ biçiminde eklenir.

<KeyFragment> apiAccessToken ve <Global> kapsamıyla bir <CacheKey> girişi tanımlarsanız her giriş, orgName__envName__apiAccessToken ve ardından erişim jetonunun serileştirilmiş değeri olarak depolanır. "apifactory" adlı bir kuruluştaki "test" adlı bir ortamda dağıtılan bir API proxy'si için erişim jetonları şu önbellek anahtarında depolanır: apifactory__test__apiAccessToken.

Application

API proxy adı önek olarak kullanılır.

Önbellek anahtarı, orgName__envName__apiProxyName biçiminde eklenir.

Proxy

Ön ek olarak ProxyEndpoint yapılandırması kullanılır.

Önbellek anahtarı, orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName şeklinde başa eklenir .

Target

Önek olarak TargetEndpoint yapılandırması kullanılıyor.

Önbellek anahtarı başına orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName biçiminde eklenir .

Exclusive

Varsayılan. En spesifik olan budur ve bu nedenle belirli bir önbellek içinde ad alanı çakışması riski minimum düzeydedir.

Önek iki biçimden biridir:

  • Politika, ProxyEndpoint akışına eklenirse ön ek ApiProxyName_ProxyEndpointName biçiminde olur.
  • Politika TargetEndpoint konumuna eklenirse önek ApiProxyName_TargetName biçiminde olur.

Önbellek anahtarı, başına orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName biçiminde eklenir.

Örneğin, tam dize aşağıdaki gibi görünebilir:

apifactory__test__weatherapi__16__default__apiAccessToken
.

<Source> öğesi

Değerinin önbelleğe yazılması gereken değişkeni belirtir.

<Source>source_variable</Source>

Varsayılan:

Yok

Bulunma:

Gerekli

Tür:

Dize

Kullanım notları

Bu politikayı genel amaçlı önbelleğe alma için kullanın. Çalışma zamanında <PopulateCache> politikası, <Source> öğesinde belirttiğiniz değişkenden <CacheResource> öğesinde belirttiğiniz önbelleğe veri yazar. <CacheKey>, <Scope> ve <Prefix> öğelerini kullanarak değeri almak için <LookupCache> politikasından kullanabileceğiniz bir anahtar belirtebilirsiniz. Önbelleğe alınan değerin süresinin ne zaman dolacağını yapılandırmak için <ExpirySettings> öğesini kullanın.

PopulateCache politikası, LookupCache politikası ve InValidateCache politikası ile genel amaçlı önbelleğe alma, yapılandırdığınız bir önbelleği veya varsayılan olarak dahil edilen paylaşılan bir önbelleği kullanır. Çoğu durumda, altta yatan paylaşılan önbellek ihtiyaçlarınızı karşılamalıdır. Bu önbelleği kullanmak için <CacheResource> öğesini çıkarmanız yeterlidir.

Önbellek sınırları: Ad ve değer boyutu, toplam önbellek sayısı, önbellekteki öğe sayısı ve geçerlilik süresi gibi çeşitli önbellek sınırları geçerlidir.

Temel veri deposu hakkında daha fazla bilgi edinmek için Dahili verileri önbelleğe alma konusuna bakın. Önbellekleri yapılandırma hakkında daha fazla bilgi edinmek için Ortam önbelleği oluşturma ve düzenleme bölümüne bakın.

Önbellek şifrelemesi hakkında

Edge for Public Cloud: Önbellek yalnızca PCI ve HIPAA hizmetinin etkinleştirildiği kuruluşlarda şifrelenir. Bu kuruluşlar için şifreleme, kuruluş temel hazırlığı sırasında yapılandırılır.

Hata kodları

Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar ortaya çıkabilir.

Hata kodu HTTP Durumu Gerçekleşme zamanı:
policies.populatecache.EntryCannotBeCached 500 Giriş önbelleğe alınamaz. Önbelleğe alınan mesaj nesnesi, Serialize edilebilir sınıfın bir örneği değil.

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.

Hata adı Neden Düzelt
InvalidCacheResourceReference Bu hata, PopulateCache politikasındaki <CacheResource> öğesi, API proxy'sinin dağıtıldığı ortamda mevcut olmayan bir ada ayarlanırsa ortaya çıkar.
CacheNotFound <CacheResource> öğesinde belirtilen önbellek mevcut değil.

Hata değişkenleri

Bu değişkenler, bu politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. populatecache.POP-CACHE-1.failed = true

Örnek hata yanıtı

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

Hata kuralı örneği

<FaultRule name="Populate Cache Fault">
    <Step>
        <Name>AM-EntryCannotBeCached</Name>
        <Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
    </Step>
    <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>