Bekerja dengan kunci cache

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Baca dokumentasi Apigee Edge.

Ketika menggunakan kebijakan cache, Anda memastikan keunikan kunci nilai yang di-cache dengan mengonfigurasi kunci cache. Kunci cache, beserta nilai lain yang dapat Anda konfigurasi, memberikan cara yang andal untuk mendapatkan data yang sama dengan yang Anda masukkan. Anda menggunakan kunci cache dengan kebijakan FillCache, kebijakan LookupCache, kebijakan InvalidateCache, dan kebijakanResponseCache.

Apigee menggunakan nilai elemen konfigurasi -- <Scope>, <CacheKey>/<Prefix>, dan <CacheKey>/<KeyFragment> -- untuk menyusun nilai kunci cache, yang merupakan ID yang terkait dengan nilai dalam cache. Komposisi kunci cache berfungsi dengan cara yang sama seperti 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> mengenumerasi daftar nilai yang telah ditentukan. Elemen <CacheKey> <Prefix> menggantikan <Scope> dengan nilai tetap yang Anda pilih sendiri.
<CacheKey>/<KeyFragment> Gunakan satu atau beberapa elemen <CacheKey> <KeyFragment> yang digabungkan untuk menentukan ID unik bagi entri cache. Nilai KeyFragment dapat berupa literal statis atau ditetapkan dari variabel.

Apigee menyusun kunci cache dari dua bagian, yaitu bagian awalan dan bagian fragmen gabungan, yang dipisahkan dengan 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 Respons Cache, Anda dapat memilih untuk menambahkan kunci cache ini dengan nilai dari header Accept respons.

Menggunakan <CacheKey>

Elemen <CacheKey> mengonfigurasi cara Apigee 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 caching dan pengambilan. Dalam kebijakan fillCache dan LookupCache, setiap kebijakan harus memiliki elemen <CacheKey>yang identik untuk memastikan bahwa nilai yang diambil dari cache sesuai dengan nilai yang ditempatkan di sana.

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

Misalnya, konfigurasi berikut akan 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 tersusun secara dinamis dengan mereferensikan variabel dalam elemen <KeyFragment>, seperti yang ditunjukkan di sini:

<KeyFragment ref="variable_name"/>

Misalnya, agar nilai kunci cache menggabungkan Jenis Konten pesan permintaan, lakukan hal 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, 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 agar kunci tersebut menyertakan bagian-bagian string kueri permintaan. Misalnya, URL berikut menggunakan dua parameter kueri -- param1 dan param2 -- yang dapat Anda gunakan di kunci cache:

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

Elemen <CacheKey> Anda dapat menggabungkan nilai-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 berikut:

prefix_part__value1__value2

Alih-alih menentukan beberapa parameter kueri yang berbeda, cara alternatifnya adalah menggunakan variabel request.querystring, yang menyisipkan seluruh string parameter secara harfiah sebagai bagian dari kunci cache. Perlu diingat bahwa meskipun metode ini memperhitungkan semua parameter, jika urutan parameter bervariasi dari satu permintaan ke permintaan berikutnya, maka 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 dari nilai tersebut ke kunci cache Anda. Keuntungan menggunakan cakupan atau awalan dalam kunci cache adalah Anda dapat membatalkan 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 ke sempit, dengan yang paling sempit sebagai default. Nilai default ini akan 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 namespace.

Misalnya, nilai <Scope> "Global" -- cakupan terluas -- mewakili nama organisasi dan lingkungan. Jadi, jika proxy Anda di-deploy di organisasi bernama 'perusahaansaya' dan lingkungan bernama 'prod', nilai awalan yang dihasilkan adalah sebagai berikut:

mycompany__prod__[FRAGMENT_PART]

Seperti yang dijelaskan dalam kebijakan LookupCache, cakupannya dapat dikonfigurasi untuk meningkatkan kekhususan dari Global ke Eksklusif. Cakupan eksklusif adalah cakupan yang paling spesifik, sehingga mewakili risiko minimal konflik namespace dalam cache tertentu. Setiap entri cache dengan cakupan Eksklusif diawali dalam bentuk berikut:

orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]

Berikut beberapa contohnya. Contoh ini mengasumsikan bahwa revisi ke-16 dari proxy Anda yang bernama 'weatherapi' di-deploy di organisasi bernama 'perusahaansaya' dan lingkungan bernama 'prod', dan nama proxyEndpoint adalah 'default', dan bahwa 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