Önbellek anahtarlarıyla çalışma

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

Önbellek politikalarını kullanırken önbellek anahtarlarını yapılandırarak önbelleğe alınan değer anahtarlarının benzersizliğini sağlarsınız. Yapılandırabileceğiniz diğer değerlerle birlikte bir önbellek anahtarı, girdiğiniz verileri güvenilir bir şekilde almanızı sağlar. Önbellek anahtarlarını Populate Cache policy (Önbelleği Doldurma Politikası), LookupCache policy (Önbelleğe Bakma Politikası), InvalidateCache policy (Önbelleği Geçersiz Kılma Politikası) ve Response Cache policy (Yanıt Önbelleği Politikası) ile birlikte kullanırsınız.

Yapılandırma öğelerinin değerleri (<CacheKey>/<KeyFragment>, <Scope> ve <Prefix>), önbelleğe yerleştirdiğiniz değerle ilişkilendirilen bir tanımlayıcı oluşturmak için birleştirilir. Değeri almak için aynı yapılandırmayı kullanırsınız.

Aşağıdaki önbellek politikası yapılandırma öğeleriyle bir önbellek anahtarı oluşturabilirsiniz:

Önbellek Yapılandırma Öğesi Açıklama
<CacheKey>/<KeyFragment> Önbellek girişleri için benzersiz bir tanımlayıcı belirtmek üzere <CacheKey> <KeyFragment> öğelerini birlikte kullanın. KeyFragment değerleri statik değişmezler olabilir veya değişkenlerden ayarlanabilir.
<Scope> veya <Prefix> Önbellek anahtarlarını daha fazla ad alanına ayırmak için <Scope> veya <Prefix> öğelerini kullanın. <Scope>, önceden tanımlanmış değerlerin listesini numaralandırır. <Prefix> öğesi, <Scope> özelliğini kendi seçtiğiniz bir değerle geçersiz kılar.

Bu değerler aşağıdaki biçimde birleştirilir. <Scope> veya <Prefix> değerleri, KeyFragment değerlerinden çift alt çizgiyle ayrılır. Birden fazla KeyFragment değeri de çift alt çizgiyle ayrılır.

scope | prefix__keyfragment[__keyfragment]

Yanıt önbelleği politikası ile bu önbellek anahtarını, yanıtın Accept başlığındaki değerlerle isteğe bağlı olarak ekleyebilirsiniz.

<CacheKey> kullanma

<CacheKey> öğesi, Edge'in oluşturduğu her önbellek girişi için nasıl benzersiz bir tanımlayıcı (anahtar) oluşturacağını yapılandırır. Edge, önbelleğe alınmış değeri aldığında doğru değeri bulmak için önbellek anahtarını kullanır. ResponseCache politikasında, hem önbelleğe alma hem de alma için anahtarı tek bir yapılandırma tanımlar. PopulateCache ve LookupCache politikalarında, önbellekten alınan bir değerin oraya yerleştirilen bir değere karşılık gelmesini sağlamak için her politikada aynı <CacheKey> öğeler bulunmalıdır.

<CacheKey> öğesi birden fazla <KeyFragment> öğesi içerebilir. Çalışma zamanında, <KeyFragment> öğeleri tarafından belirtilen değerler, önbellek anahtarının bir bölümünü oluşturmak için aralarına iki alt çizgi eklenerek birleştirilir.

Örneğin, aşağıdaki yapılandırma, önbellek anahtarında kullanılmak üzere hello__world değeri oluşturur:

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

Ayrıca, değişkeni <KeyFragment> öğesinde referans vererek önbellek anahtarında değişken değerleri de kullanabilirsiniz. Örneğin:

<KeyFragment ref="variable_name"/>

Örneğin, önbellek anahtarı değerinin istek iletisinin Content-Type'ını içermesini sağlamak için aşağıdaki işlemleri yaparsınız:

<KeyFragment ref="request.header.Content-Type"/>

Aşağıdaki yapılandırmada request.header.Content-Type değişkeni application/json değerine sahiptir.

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

Bu işlem, apiAccessToken__application/json__bar ile biten bir önbellek anahtarı oluşturur.

Kullanabileceğiniz değişkenlerin listesi için Değişkenler referansı başlıklı makaleyi inceleyin.

Sorgu parametrelerinden türetilen önbellek anahtarları

request.queryparam.<queryparam_name> ve request.querystring gibi değişkenleri kullanarak, anahtarın bir isteğin sorgu dizesinin bölümlerini içereceği şekilde bir önbellek anahtarı yapılandırabilirsiniz. Örneğin, aşağıdaki URL'de önbellek anahtarınızda kullanabileceğiniz iki sorgu parametresi (param1 ve param2) vardır:

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

<CacheKey> öğeniz, aşağıdaki gibi bir yapılandırmayla bu değerleri içerebilir:

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

Çalışma zamanında, önbellek anahtarı aşağıdaki örnekte olduğu gibi birleştirilmiş parametre değerlerini içerir:

other_key_parts__value1__value2

Parametrelerden değer eklemek için değişkenleri kullandığınızda değerlerin <KeyFragment> öğe sırasının önerdiği sırada birleştirileceğini unutmayın. Ayrıca, Edge'in yalnızca <KeyFragment> öğeleriyle özel olarak referans verdiğiniz değerleri kullanacağını unutmayın. İstek sorgusu parametre listeleriniz farklıysa varyasyonlar önbellek anahtarında dikkate alınmaz.

Alternatif olarak, parametrelerin tamamını önbellek anahtarının bir parçası olarak tam anlamıyla ekleyen request.querystring değişkenini kullanabilirsiniz. Bu yöntemin tüm parametreleri hesaba kattığını ancak parametrelerin sırası bir istekten diğerine değişirse anahtarın farklı olacağını unutmayın. Diğer bir deyişle, param1=value1&param2=value2 ve param2=value2&param1=value1 aynı önbellek anahtarı değerine neden olmaz.

Kullanabileceğiniz değişkenlerin listesi için Değişkenler referansı başlıklı makaleyi inceleyin.

<Scope> ve <Prefix> kullanma

<Scope> ve <Prefix> öğeleri, anahtara ad alanı ön eki eklemenin bir yolunu sunar. Temsil ettikleri değerler, önbellek anahtarınızın başına eklenir.

Varsayılan olarak <Scope> öğesi kullanılır. Değerleri genişten dara doğru değişen bir numaralandırmadır. En dar değer varsayılan değerdir. Başka bir değer veya <Prefix> öğe değeri belirtmediğiniz sürece bu varsayılan değer kullanılır. <Scope> değerini <Prefix> öğesini kullanarak geçersiz kılabilir ve böylece ad alanı için özel bir değer belirtebilirsiniz.

Örneğin, en geniş kapsam olan <Scope> değeri "Global", kuruluş ve ortam adını temsil eder. Bu nedenle, proxy'niz "mycompany" adlı bir kuruluşta ve "prod" adlı bir ortamda dağıtılıyorsa ortaya çıkan ön ekli değer aşağıdaki gibi olur:

Yapılandırma Sonuç
<Scope>Global</Scope> mycompany__prod__.

Yukarıda tanımlanan önbellek anahtarıyla Global kapsamını kullanıyorsanız sonuç aşağıdaki gibi olur:

Yapılandırma Sonuç
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

LookupCache politikası'nda açıklandığı gibi kapsam, Global'den Exclusive'e kadar artan bir özgüllükle yapılandırılabilir. Özel kapsam en belirgin olanıdır ve bu nedenle belirli bir önbellekte ad alanı çakışması riski en düşüktür. Kapsamı Exclusive olan her önbellek girişinin önüne aşağıdaki biçimde bir önek eklenir:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Örneğin, <Scope> için Exclusive değeri kullanılarak oluşturulan bir önbellek anahtarı aşağıdaki gibi görünür:

apifactory__test__weatherapi__16__default__apiAccessToken