Cache tujuan umum

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

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

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

Kode contoh dalam topik ini didasarkan pada Keluar Proxy contoh OAuth di GitHub. Contoh ini menggunakan kebijakan cache untuk menyimpan token akses OAuth untuk digunakan kembali di beberapa panggilan keluar.

Pada contoh berikut, token akses OAuth ditulis ke cache menggunakan filledCache lebih lanjut. Token OAuth diambil untuk permintaan berikutnya oleh kebijakan LookupCache. Setelah masa berlaku token akses habis, JavaScript digunakan untuk mengambil token akses baru, yang kemudian di-cache oleh kebijakan filledCache.

Mengisi cache

Gunakan kebijakan fillCache untuk menulis data ke cache. Contoh ini menulis akses OAuth ke cache. Untuk informasi referensi kebijakan, lihat Isi 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 diisi oleh panggilan JavaScript berikut: context.setVariable('twitter-translate.apiAccessToken', getAccessToken());

Untuk 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 ke variabel twitter-translate.apiAccessToken. Untuk referensi kebijakan informasi tambahan, 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 validasi cache

Cache dapat dibatalkan secara eksplisit dengan menentukan header HTTP. Ketika permintaan yang berisi header HTTP yang ditentukan diterima, cache akan dihapus. Untuk kebijakan informasi referensi, 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>