PopulateCache politikası

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

Önbelleğe alınmış değerlerin çalışma zamanında nasıl yazılacağını yapılandırır.

Önbelleği Doldurma politikası, kısa süreli genel amaçlı bir önbelleğe giriş yazmak için tasarlanmıştır. Lookup Cache policy (önbellek girişlerini okumak için) ve Invalidate Cache policy (girişleri geçersiz kılmak için) ile birlikte kullanılır.

Arka uç kaynaklarının yanıtlarını önbelleğe alma hakkında bilgi edinmek için Response Cache politikasına bakın.

Öğe referansı

Bu politikada yapılandırabileceğiniz öğeler aşağıda 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çermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

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

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğe

Politikayı name özelliğine ek olarak farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.

<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 benzersiz bir işaretçi yapılandırır.

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

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

Varsayılan:

Yok

Mevcut olma:

Zorunlu

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ğıdakiler 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 başlıklı makaleyi inceleyin.

<CacheResource> öğesi

İletilerin depolanması gereken önbelleği belirtir.

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

<CacheResource>cache_to_use</CacheResource>

Varsayılan:

Yok

Mevcut olma:

İsteğe bağlı

Tür:

Dize

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

<CacheKey>/<KeyFragment> öğesi

Önbelleğe alınmış yanıtlara isteklerin eşleştirilmesi için bir ad alanı oluşturarak önbellek anahtarına dahil edilmesi gereken bir değeri belirtir.

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

Varsayılan:

Yok

Mevcut olma:

İsteğe bağlı

Tür:

Yok

Bu, bir anahtar (sizin sağladığınız statik bir ad) veya bir değer (bir değişkene referans verilerek ayarlanan dinamik bir giriş) olabilir. Belirtilen tüm parçalar (ön ekle birlikte) birleştirilerek önbellek anahtarı oluşturulur.

<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 başlıklı makaleyi inceleyin.

Özellikler

Özellik Tür Varsayılan Zorunlu Açıklama
ref dize Hayır

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

<CacheKey>/<Prefix> öğesi

Önbellek anahtarı öneki olarak kullanılacak bir değeri belirtir.

<Prefix>prefix_string</Prefix>

Varsayılan:

Yok

Mevcut olma:

İsteğe bağlı

Tür:

Dize

<Scope> ile numaralandırılmış bir değer yerine kendi değerinizi belirtmek istediğinizde <Scope> yerine bu değeri kullanın. Tanımlanmışsa, <Prefix>, önbelleğe yazılan girişler için önbellek anahtarı değerinin başına eklenir. <Prefix> öğe 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 başlıklı makaleyi inceleyin.

<ExpirySettings> öğesi

Önbellek girişinin ne zaman süresinin dolacağını belirtir. <TimeoutInSeconds> mevcut olduğunda hem <TimeOfDay> hem de <ExpiryDate>'ı 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

Mevcut olma:

Zorunlu

Tür:

Yok

<ExpirySettings> öğesinin alt öğeleri

Tam olarak bir alt öğe kullanın. Aşağıdaki tabloda <ExpirySettings> öğesinin alt öğeleri açıklanmaktadır:

Alt öğe Açıklama
<TimeoutInSeconds>

Bir önbellek girişinin süresinin dolması gereken saniye sayısı.

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

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

<ExpiryDate>

Bir önbellek girişinin geçerliliğinin sona ereceği tarihi belirtir. Formda bir dize belirtin mm-dd-yyyy.

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

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

<TimeOfDay>

Bir önbellek girişinin geçerliliğinin sona ermesi gereken günün saatini belirtir. HH:mm:ss biçiminde bir dize belirtin. Burada SS, UTC saat diliminde 24 saatlik saatteki saati temsil eder. Örneğin, 14:30:00 değeri öğleden sonra 2:30'u ifade eder.

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

Olası alt öğelerden yalnızca birini belirtmeniz gerekir. Birden fazla öğe belirtirseniz öncelik sırası:TimeoutInSeconds, ExpiryDate, TimeOfDay.

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

<Scope> öğesi

<CacheKey> öğesinde <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"

Mevcut olma:

İsteğe bağlı

Tür:

Dize

<Scope> ayarı, <Scope> değerine göre önüne eklenen bir önbellek anahtarı belirler. Örneğin, kapsam Exclusive olarak ayarlandığında bir önbellek anahtarı aşağıdaki biçimi alır:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]

<CacheKey> içinde bir <Prefix> öğesi varsa bu öğe, <Scope> öğesi değerinin yerine geçer. 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 başlıklı makaleyi inceleyin.

Kabul edilebilir değerler

Global

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

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

Application

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

Önbellek anahtarı, orgName__envName__apiProxyName biçiminde öneklenir.

Proxy

ProxyEndpoint yapılandırması, önek olarak kullanılır.

Önbellek anahtarı, orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName biçiminde öneklenir .

Target

TargetEndpoint yapılandırması, önek olarak kullanılır.

Önüne orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName biçiminde önbellek anahtarı eklenir .

Exclusive

Varsayılan. Bu, en belirgin olanıdır ve bu nedenle belirli bir önbellekte ad alanı çakışması riskini en aza indirir.

Önek iki biçimden birinde olabilir:

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

Önbellek anahtarı, şu biçimde eklenir: orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

Örneğin, tam dize şu şekilde görünebilir:

apifactory__test__weatherapi__16__default__apiAccessToken
.

<Source> öğesi

Değeri önbelleğe yazılacak değişkeni belirtir.

<Source>source_variable</Source>

Varsayılan:

Yok

Mevcut olma:

Zorunlu

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şkendeki verileri <CacheResource> öğesinde belirttiğiniz önbelleğe yazar. Değeri almak için <LookupCache> politikasından kullanabileceğiniz bir anahtarı belirtmek üzere <CacheKey>, <Scope> ve <Prefix> öğelerini kullanabilirsiniz. Önbelleğe alınan değerin ne zaman sona ereceğini 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, temel alınan paylaşılan önbellek ihtiyaçlarınızı karşılar. Bu önbelleği kullanmak için <CacheResource> öğesini atlamanı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 alınan veri deposu hakkında daha fazla bilgi için Önbellek iç işleyişi başlıklı makaleyi inceleyin. Önbellekleri yapılandırma hakkında daha fazla bilgi için Ortam önbelleği oluşturma ve düzenleme başlıklı makaleyi inceleyin.

Önbellek şifreleme hakkında

Herkese Açık Bulut için Edge: Önbellek yalnızca PCI- ve HIPAA etkin kuruluşlarda şifrelenir. Bu kuruluşlar için şifreleme, kuruluş sağlama sırasında yapılandırılır.

Hata kodları

Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.

Çalışma zamanı hataları

Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.

Hata kodu HTTP Durumu Şu durumda gerçekleşir:
policies.populatecache.EntryCannotBeCached 500 Giriş önbelleğe alınamaz. Önbelleğe alınan ileti nesnesi bir sınıf oluşturun.

Dağıtım hataları

Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.

Hata adı Neden Düzelt
InvalidCacheResourceReference Bu hata, PopulateCache politikasındaki <CacheResource> öğesi API proxy'sinin dağıtıldığı ortamda bulunmayan bir ad.
CacheNotFound <CacheResource> öğesinde belirtilen önbellek bulunur.

Hata değişkenleri

Bu değişkenler, politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi 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"
    }
  }
}

Örnek hata kuralı

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