Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Verileri daha hızlı almak için genel amaçlı bir önbellekte depolamak üzere politikaları kullanabilirsiniz. Aşağıdaki politikaları kullanarak proxy'niz, çalışma zamanında önbelleğe alınmış verileri depolayabilir ve alabilir:
- Önbelleğe veri eklemek için Önbellek politikasını doldurun.
- Önbelleğe alınmış verilere erişmek için LookupCache politikası.
- Önbelleği boşaltmak için InvalidateCache politikası.
Bu politikalar, proxy'leriniz tarafından kullanılan verilerin genel olarak önbelleğe alınması için tasarlanmıştır.
Bu konudaki örnek kod, GitHub'daki Outbound OAuth örnek proxy'sini temel alır (bkz. Örnek listesi). Bu örnekte, birden fazla giden çağrıda yeniden kullanılmak üzere bir OAuth erişim jetonunu depolamak için önbellek politikası kullanılır.
Her politika türü bir XML şeması (.xsd) ile tanımlanır. Referans olarak, politika şemaları GitHub'da mevcuttur.
Aşağıdaki örnekte, PopulateCache politikası kullanılarak önbelleğe bir OAuth erişim jetonu yazılmaktadır. OAuth jetonu, sonraki istekler için bir LookupCache politikası tarafından alınır. Erişim jetonunun süresi dolduktan sonra yeni bir erişim jetonu almak için JavaScript kullanılır. Bu jeton da PopulateCache politikası tarafından önbelleğe alınır.
Önbelleği doldurma
Önbelleğe veri yazmak için PopulateCache politikasını kullanın. Bu örnekte, önbelleğe bir OAuth erişim jetonu yazılır. Politika referans bilgileri için Önbelleği Doldurma Politikası'na bakın.
<PopulateCache name="token-cache"> <!-- The cache to write to. --> <CacheResource>mycache</CacheResource> <!-- The source of the data, a variable containing the value. --> <Source>twitter-translate.apiAccessToken</Source> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- A unique pointer (a flow variable value) to the data. Use this later to retrieve it. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> <!-- Entries placed into the cache with this policy will expire after 600 seconds. --> <ExpirySettings> <TimeoutInSec>600</TimeoutInSec> </ExpirySettings> </PopulateCache>
Değişkenler politikalar veya kod aracılığıyla doldurulabilir. Bu örnekteki Source değişkeni, aşağıdaki JavaScript çağrısıyla doldurulur:
context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Önbellek anahtarları hakkında daha fazla bilgi için Önbellek anahtarlarıyla çalışma başlıklı makaleyi inceleyin.
Önbelleğe alınan verileri arama
LookupCache politikasıyla önbelleğe alınmış değerleri alabilirsiniz. Aşağıdaki LookupCache politikası, mycache öğesinden bir değer okur ve değeri twitter-translate.apiAccessToken değişkenine yazar. Politika referans bilgileri için LookupCache politikasına bakın.
<LookupCache name="token-cache"> <!-- The cache to read from. --> <CacheResource>mycache</CacheResource> <!-- Where to assign the retrieved value - here, a variable. --> <AssignTo>twitter-translate.apiAccessToken</AssignTo> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- The unique pointer (a flow variable value) that was used to store the data in the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> </LookupCache>
Önbelleği geçersiz kılma
Önbellek, bir HTTP üstbilgisi belirtilerek açıkça geçersiz kılınabilir. Belirtilen HTTP üst bilgisini içeren bir istek alındığında önbellek temizlenir. Politika referans bilgileri için InvalidateCache politikasına bakın.
<InvalidateCache name="InvalidateMyCache"> <!-- The cache to invalidate. --> <CacheResource>test-cache</CacheResource> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- Fragments constructing the unique pointer used when the data was put into the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" /> </CacheKey> <PurgeChildEntries>true</PurgeChildEntries> </InvalidateCache>