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 terkait dengan nilai dalam cache. Komposisi kunci cache berfungsi dengan cara yang sama untuk 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> mencantumkan 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 gabungan, 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 secara opsional 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 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 ke 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, untuk membuat nilai kunci cache menggabungkan Content-Type pesan permintaan, Anda 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 yang ditentukan platform atau kustom 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 dari 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 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

Daripada menentukan beberapa parameter kueri yang berbeda, alternatifnya adalah menggunakan variabel request.querystring, yang memasukkan 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 dari header 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 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 ruang nama.

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

mycompany__prod__[FRAGMENT_PART]

Seperti yang dijelaskan dalam kebijakan LookupCache, cakupan dapat dikonfigurasi untuk meningkatkan spesifisitas dari Global ke Eksklusif. Cakupan Eksklusif adalah yang paling spesifik, sehingga meminimalkan risiko konflik namespace dalam cache tertentu. Setiap entri cache dengan cakupan Eksklusif memiliki awalan dalam bentuk berikut:

orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]

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

Dalam hal ini, elemen <Prefix> menggantikan <Scope>, itulah sebabnya namespace system1 muncul dalam hasil.