Menggunakan kunci cache

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Saat menggunakan kebijakan cache, Anda memastikan keunikan kunci nilai yang di-cache dengan mengonfigurasi kunci cache. Kunci cache, beserta 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 Populate Cache, kebijakan LookupCache, kebijakan InvalidateCache, dan kebijakan Response Cache.

Nilai elemen konfigurasi -- <CacheKey>/<KeyFragment>, <Scope>, dan <Prefix> -- digabungkan untuk membuat ID yang dikaitkan dengan nilai yang Anda masukkan ke dalam cache. Anda menggunakan konfigurasi yang sama ini untuk mengambil nilai.

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

Elemen Konfigurasi Cache Deskripsi
<CacheKey> / <KeyFragment> Gunakan elemen <CacheKey> <KeyFragment> yang digabungkan untuk menentukan ID unik untuk entri cache. Nilai KeyFragment dapat berupa literal statis atau ditetapkan dari variabel.
<Scope> atau <Prefix> Gunakan elemen <Scope> atau <Prefix> untuk lebih lanjut kunci cache namespace. <Scope> mencantumkan daftar nilai yang telah ditentukan sebelumnya. Elemen <Prefix> menggantikan <Scope> dengan nilai pilihan Anda sendiri.

Nilai ini digabungkan dalam bentuk berikut, dengan nilai <Scope> atau <Prefix> dipisahkan dari nilai KeyFragment oleh garis bawah ganda. Beberapa nilai KeyFragment juga dipisahkan dengan garis bawah ganda.

scope | prefix__keyfragment[__keyfragment]

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

Menggunakan <CacheKey>

Elemen <CacheKey> mengonfigurasi cara Edge membuat ID unik (kunci) untuk setiap entri cache yang dibuatnya. Saat mengambil nilai yang di-cache, Edge menggunakan kunci cache untuk menemukan nilai yang benar. Dalam kebijakan ResponseCache, satu konfigurasi menentukan kunci untuk caching 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 beberapa elemen <KeyFragment>. Saat runtime, nilai yang ditentukan oleh elemen <KeyFragment> digabungkan dengan dua garis bawah di antaranya untuk membentuk bagian dari kunci cache.

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

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

Anda juga dapat menggunakan nilai variabel dalam kunci cache 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"/>

Dalam konfigurasi berikut, variabel request.header.Content-Type memiliki nilai application/json.

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

Hasilnya adalah kunci cache yang diakhiri dengan apiAccessToken__application/json__bar.

Untuk mengetahui daftar variabel yang dapat Anda gunakan, lihat Referensi variabel.

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:

other_key_parts__value1__value2

Perlu diingat bahwa saat Anda menggunakan variabel untuk menyisipkan nilai dari parameter, nilai akan digabungkan dalam urutan yang disarankan oleh urutan elemen <KeyFragment>. Selain itu, perhatikan bahwa Edge hanya akan menggunakan nilai yang Anda referensikan secara khusus dengan elemen <KeyFragment>. Jika daftar parameter kueri permintaan Anda bervariasi, variasi tidak akan diperhitungkan dalam kunci cache.

Alternatifnya adalah menggunakan variabel request.querystring, yang memasukkan 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.

Untuk mengetahui daftar variabel yang dapat Anda gunakan, lihat Referensi variabel.

Menggunakan <Scope> dan <Prefix>

Elemen <Scope> dan <Prefix> menyediakan cara untuk menambahkan awalan namespace ke kunci. Nilai yang diwakilinya ditambahkan ke awalan kunci cache Anda.

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 Anda menentukan nilai lain atau menentukan nilai elemen <Prefix>. Anda dapat mengganti nilai <Scope> menggunakan elemen <Prefix>, dan menentukan nilai kustom untuk penamaan ruang lingkup.

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 berikut:

Konfigurasi Hasil
<Scope>Global</Scope> mycompany__prod__.

Jika Anda menggunakan cakupan Global dengan kunci cache yang ditentukan di atas, hasilnya adalah sebagai berikut:

Konfigurasi Hasil
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

Seperti yang dijelaskan dalam kebijakan LookupCache, cakupan dapat dikonfigurasi untuk meningkatkan spesifisitas dari Global ke Eksklusif. Cakupan Eksklusif adalah yang paling spesifik, dan oleh karena itu menunjukkan risiko minimal tabrakan namespace dalam cache tertentu. Setiap entri cache dengan cakupan Eksklusif diberi awalan dalam bentuk berikut:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Misalnya, kunci cache yang dibuat dari penggunaan nilai Eksklusif untuk <Scope> akan terlihat seperti berikut:

apifactory__test__weatherapi__16__default__apiAccessToken