Penyimpanan dalam cache untuk 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 agar pengambilan lebih cepat. Dengan menggunakan kebijakan berikut, proxy Anda dapat menyimpan dan mengambil data yang di-cache saat runtime:

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

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

Dalam contoh berikut, token akses OAuth ditulis ke cache menggunakan kebijakan PopulateCache. 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 di-cache oleh kebijakan PopulateCache.

Mengisi cache

Gunakan kebijakan PopulateCache 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 Menggunakan kunci cache.

Mencari data dalam cache

Anda dapat mengambil nilai yang disimpan dalam cache dengan kebijakan LookupCache. Kebijakan LookupCache berikut membaca nilai dari mycache dan menulis nilai 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 validasi cache

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