Contoh: Pembuatan cache tujuan umum

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Anda dapat menggunakan kebijakan untuk menyimpan data dalam cache tujuan umum agar pengambilan lebih cepat. Dengan menggunakan kebijakan berikut, proxy Anda dapat menyimpan dan mengambil data yang di-cache pada saat runtime:

Kebijakan ini dirancang untuk penyimpanan data dalam cache umum yang digunakan oleh proxy Anda.

Kode contoh dalam topik ini didasarkan pada proxy contoh OAuth Keluar di GitHub (lihat Daftar contoh). Contoh ini menggunakan kebijakan cache guna menyimpan token akses OAuth untuk digunakan kembali pada beberapa panggilan keluar.

Setiap jenis kebijakan ditentukan oleh skema XML (.xsd). Sebagai referensi, skema kebijakan tersedia di GitHub.

Pada contoh berikut, token akses OAuth ditulis ke cache menggunakan kebijakan FILLCache. Token OAuth diambil untuk permintaan berikutnya oleh kebijakan LookupCache. Setelah masa berlaku token akses berakhir, JavaScript akan digunakan untuk mengambil token akses baru, yang kemudian disimpan dalam cache oleh kebijakan filledCache.

Mengisi cache

Gunakan kebijakan FILLINCache untuk menulis data ke cache. Contoh ini menulis token akses OAuth ke cache. Untuk informasi referensi kebijakan, lihat Mengisi kebijakan Cache.

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

Variabel dapat diisi oleh kebijakan atau kode. Variabel Source dalam contoh ini diisi oleh panggilan JavaScript berikut: context.setVariable('twitter-translate.apiAccessToken', getAccessToken());

Untuk mengetahui informasi selengkapnya tentang kunci cache, lihat Bekerja dengan kunci cache.

Mencari data yang di-cache

Anda dapat mengambil nilai yang di-cache dengan kebijakan LookupCache. Kebijakan LookupCache berikut membaca nilai dari mycache dan menulis nilai tersebut ke variabel twitter-translate.apiAccessToken. Untuk informasi referensi kebijakan, lihat kebijakan LookupCache.

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

Membatalkan cache

Cache dapat dibatalkan secara eksplisit dengan menentukan header HTTP. Saat permintaan yang berisi header HTTP yang ditentukan diterima, cache akan dikosongkan. Untuk informasi referensi kebijakan, lihat kebijakan InvalidateCache.

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