Menggunakan kunci cache

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat dokumentasi Apigee Edge.

Saat menggunakan kebijakan cache, Anda memastikan keunikan kunci nilai yang di-cache dengan mengonfigurasi kunci cache. Kunci cache, bersama dengan nilai lain yang dapat Anda konfigurasi, memberi Anda cara yang andal untuk mendapatkan data yang sama dengan yang Anda masukkan. Anda menggunakan kunci cache dengan kebijakan PopulateCache, kebijakan LookupCache, kebijakan InvalidateCache, dan kebijakan ResponseCache.

Apigee menggunakan nilai elemen konfigurasi -- <Scope>, <CacheKey>/<Prefix>, dan <CacheKey>/<KeyFragment> -- untuk menyusun nilai untuk kunci cache, yang merupakan ID yang dikaitkan dengan nilai dalam cache. Komposisi kunci cache berfungsi dengan cara yang sama dengan semua kebijakan cache.

Dengan elemen konfigurasi kebijakan cache berikut, Anda dapat membuat kunci cache:

Elemen Konfigurasi Cache Deskripsi
<Scope> atau <CacheKey> / <Prefix> Gunakan elemen <Scope> atau <CacheKey> <Prefix> untuk mengonfigurasi awalan yang akan diterapkan ke kunci cache akhir. <Scope> menghitung daftar nilai yang telah ditentukan sebelumnya. Elemen <CacheKey> <Prefix> menggantikan <Scope> dengan nilai tetap pilihan Anda sendiri.
<CacheKey>/<KeyFragment> Gunakan satu atau beberapa elemen <CacheKey> <KeyFragment> yang digabungkan untuk menentukan ID unik untuk entri cache. Nilai KeyFragment dapat berupa literal statis atau ditetapkan dari variabel.

Apigee menyusun kunci cache dari dua bagian, bagian awalan dan bagian fragmen komposit, yang dipisahkan oleh garis bawah ganda.

PREFIX_PART__FRAGMENT_PART

Bagian awalan ditentukan oleh elemen <Scope>, atau elemen <CacheKey> <Prefix> jika ada. Bagian fragmen terdiri dari setiap nilai dari setiap elemen <KeyFragment>, yang digabungkan dengan garis bawah ganda.

Dengan kebijakan Cache Respons, Anda dapat menambahkan kunci cache ini dengan nilai dari header Terima respons secara opsional.

Menggunakan <CacheKey>

Elemen <CacheKey> mengonfigurasi cara Apigee akan membuat ID unik (kunci) untuk setiap entri cache yang dibuatnya. Saat mengambil nilai yang di-cache, Apigee menggunakan kunci cache untuk menemukan nilai yang benar. Dalam kebijakan ResponseCache, satu konfigurasi menentukan kunci untuk penyimpanan dalam cache dan pengambilan. Dalam kebijakan PopulateCache dan LookupCache, setiap kebijakan harus memiliki elemen <CacheKey> yang identik untuk memastikan bahwa nilai yang diambil dari cache sesuai dengan nilai yang dimasukkan di sana.

Elemen <CacheKey> dapat menyertakan satu elemen <Prefix> opsional serta satu atau beberapa elemen <KeyFragment>. Saat runtime, Apigee menggabungkan nilai yang ditentukan dari setiap bagian dengan dua garis bawah di antaranya untuk membentuk kunci cache.

Misalnya, konfigurasi berikut membuat nilai myprefix__hello__world untuk digunakan dalam kunci cache:

<CacheKey>
    <Prefix>myprefix</Prefix>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

Anda dapat mengonfigurasi Apigee untuk menggunakan kunci cache yang disusun secara dinamis dengan mereferensikan variabel dalam elemen <KeyFragment>, seperti yang ditunjukkan di sini:

<KeyFragment ref="variable_name"/>

Misalnya, agar nilai kunci cache menyertakan Content-Type pesan permintaan, Anda dapat melakukannya sebagai berikut:

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

Pertimbangkan konfigurasi berikut:

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

Jika variabel request.header.Content-Type memiliki nilai application/json, hal ini akan menghasilkan kunci cache system1__apiAccessToken__application/json__bar.

Anda dapat menggunakan variabel kustom atau yang ditentukan platform dalam atribut ref.

Kunci cache yang berasal dari parameter kueri

Dengan menggunakan variabel seperti request.queryparam.<queryparam_name> dan request.querystring, Anda dapat mengonfigurasi kunci cache sehingga kunci tersebut menyertakan bagian string kueri permintaan. Misalnya, URL berikut menggunakan dua parameter kueri -- param1 dan param2 -- yang dapat Anda gunakan dalam kunci cache:

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

Elemen <CacheKey> Anda dapat menggabungkan nilai ini dengan konfigurasi seperti berikut:

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

Saat runtime, kunci cache akan menyertakan nilai parameter yang digabungkan, seperti dalam contoh berikut:

prefix_part__value1__value2

Sebagai ganti menentukan beberapa parameter kueri yang berbeda, alternatifnya adalah menggunakan variabel request.querystring, yang menyisipkan seluruh string parameter secara harfiah sebagai bagian dari kunci cache. Perhatikan bahwa meskipun metode ini memperhitungkan semua parameter, jika urutan parameter bervariasi dari satu permintaan ke permintaan berikutnya, kuncinya akan berbeda. Dengan kata lain, param1=value1&param2=value2 dan param2=value2&param1=value1 tidak menghasilkan nilai kunci cache yang sama.

Menggunakan <Scope> dan <Prefix>

Elemen <Scope> dan <CacheKey>/<Prefix> menyediakan cara untuk mengatur nilai yang di-cache ke dalam namespace. Apigee menambahkan nilai yang berasal darinya ke kunci cache Anda. Keuntungan menggunakan cakupan atau awalan dalam kunci cache adalah Anda dapat membatalkan validasi semua nilai yang memiliki satu awalan, dengan satu panggilan ke kebijakan InvalidateCache.

Elemen <Scope> digunakan secara default. Ini adalah enumerasi yang nilainya berkisar dari luas hingga sempit, dengan yang paling sempit sebagai default. Nilai default ini digunakan kecuali jika Anda menentukan nilai lain atau menentukan nilai elemen <Prefix>. Anda dapat mengganti nilai <Scope> menggunakan elemen <CacheKey>/ <Prefix>, sehingga menentukan nilai kustom untuk penamaan ruang.

Misalnya, nilai <Scope> "Global" -- cakupan terluas -- mewakili nama organisasi dan lingkungan. Jadi, jika proxy Anda di-deploy di organisasi bernama 'mycompany' dan lingkungan bernama 'prod', nilai yang ditambahkan sebelumnya akan menjadi seperti berikut:

mycompany__prod__[FRAGMENT_PART]

Seperti yang dijelaskan dalam kebijakan LookupCache, cakupan dapat dikonfigurasi untuk meningkatkan spesifitas dari Global menjadi Eksklusif. Cakupan Eksklusif adalah yang paling spesifik, sehingga mewakili risiko tabrakan namespace yang minimal dalam cache tertentu. Setiap entri cache dengan cakupan Eksklusif diberi awalan dalam bentuk berikut:

orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]

Berikut beberapa contohnya. Ini mengasumsikan bahwa revisi ke-16 proxy Anda yang bernama 'weatherapi' di-deploy di organisasi bernama 'mycompany' dan lingkungan bernama 'prod', dan nama proxyEndpoint adalah 'default', dan kebijakan cache dilampirkan ke alur di proxyEndpoint.

Konfigurasi Hasil
<Scope>Global</Scope>
<CacheKey>
  <KeyFragment>hello</KeyFragment>
  <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.
<Scope>Exclusive</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__weatherapi__16__default__hello__world
<Scope>Exclusive</Scope>
<CacheKey>
    <Prefix>system1</Prefix>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
system1__hello__world