Bekerja dengan 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 mengkonfigurasi, memberi Anda cara yang andal untuk mendapatkan data yang sama dengan yang Anda masukkan. Anda menggunakan kunci cache dengan kebijakan filledCache, Kebijakan LookupCache, kebijakan InvalidateCache, dan Kebijakan ResponseCache.

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

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

Elemen Konfigurasi Cache Deskripsi
<Scope> atau <CacheKey> / <Prefix> Gunakan <Scope> atau <Prefix> <CacheKey> untuk mengkonfigurasi awalan untuk diterapkan ke kunci cache akhir. <Scope> mengenumerasi daftar nilai yang telah ditentukan. Tujuan Elemen <CacheKey> <Prefix> mengganti <Scope> dengan nilai tetap Anda sendiri memilih.
<CacheKey>/<KeyFragment> Gunakan satu atau beberapa <CacheKey> Elemen <KeyFragment> digabungkan untuk menentukan untuk entri cache. Nilai KeyFragment dapat berupa literal statis atau diatur dari variabel.

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

PREFIX_PART__FRAGMENT_PART

Bagian awalan ditentukan oleh elemen <Scope>, atau elemen <Prefix> <CacheKey> jika saat ini. Bagian fragmen terdiri dari masing-masing nilai dari setiap Elemen <KeyFragment>, digabungkan dengan garis bawah ganda.

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

Menggunakan <CacheKey>

Elemen <CacheKey> mengonfigurasi cara Apigee membuat pengenal unik (kunci) untuk setiap entri {i>cache<i} yang dibuatnya. Ketika Apigee mengambil nilai yang di-cache, menggunakan kunci {i>cache<i} untuk menemukan nilai yang benar. Dalam kebijakan ResponseCache, satu konfigurasi menentukan kunci untuk keduanya penyimpanan ke cache dan pengambilan. Dalam kebijakan contentCache dan LookupCache, masing-masing kebijakan harus memiliki elemen <CacheKey>yang identik untuk memastikan bahwa nilai yang diambil dari {i>cache<i} sesuai dengan nilai yang dimasukkan ke sana.

Elemen <CacheKey> dapat menyertakan satu elemen <Prefix> serta satu atau lebih <KeyFragment> elemen. Saat runtime, Apigee menyambungkan nilai yang ditentukan dari setiap bagian, 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 tersusun secara dinamis dengan mereferensikan variabel dalam elemen <KeyFragment>, sebagai ditampilkan di sini:

<KeyFragment ref="variable_name"/>

Misalnya, untuk membuat nilai kunci cache menggabungkan Jenis-Konten dari pesan permintaan, Anda harus melakukan 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 buatan platform atau kustom dalam Atribut ref.

Kunci cache yang berasal dari parameter kueri

Menggunakan variabel seperti request.queryparam.<queryparam_name> dan request.querystring, Anda dapat mengonfigurasi kunci cache sehingga kunci tersebut menyertakan bagian dari 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 menyertakan nilai-nilai ini dengan seperti berikut ini:

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

Saat runtime, kunci cache akan menyertakan nilai parameter yang disambungkan, seperti dalam hal berikut:

prefix_part__value1__value2

Daripada menetapkan beberapa parameter kueri yang berbeda, sebuah alternatif adalah untuk menggunakan variabel request.querystring, yang menyisipkan seluruh parameter secara harfiah sebagai bagian dari kunci cache. Perlu diingat bahwa sementara metode ini memperhitungkan semua parameter, jika urutan parameter bervariasi dari satu permintaan ke permintaan berikutnya, maka kunci akan berbeda. Dengan kata lain, param1=value1&param2=value2 dan param2=value2&param1=value1 tidak menghasilkan cache yang sama nilai kunci.

Menggunakan <Cakupan> dan <Prefix>

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

Elemen <Scope> digunakan secara default. Ini adalah yang memiliki rentang nilai dari luas ke sempit, dengan yang terkecil sebagai secara default. Nilai default ini akan digunakan kecuali jika Anda menentukan nilai lain atau tentukan nilai elemen <Prefix>. Anda dapat mengganti Nilai <Scope> dengan menggunakan <CacheKey> / <Prefix>, dan tentukan nilai kustom untuk ruang nama.

Misalnya, nilai <Scope> "Global" -- yang paling luas ruang lingkup -- mewakili nama organisasi dan lingkungan. Jadi, jika {i>proxy<i} Anda yang di-deploy di organisasi bernama 'perusahaansaya' dan lingkungan yang bernama 'prod', nilai awal yang dihasilkan adalah sebagai berikut:

mycompany__prod__[FRAGMENT_PART]

Seperti yang dijelaskan dalam kebijakan LookupCache, cakupan dapat dikonfigurasi untuk meningkatkan kekhususan dari Global menjadi Eksklusif. Cakupan Eksklusif adalah paling spesifik, dan karenanya mewakili risiko minimal dari konflik namespace dalam {i>cache<i} tertentu. Setiap entri cache dengan cakupan Eksklusif diawali di format berikut:

orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]

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