Bekerja dengan 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 cache tombol. Kunci cache, bersama dengan nilai lain yang dapat Anda konfigurasi, memberikan cara yang andal untuk keluar data yang sama dengan yang Anda masukkan. Anda menggunakan kunci cache dengan kebijakan Isi Cache, kebijakan LookupCache, kebijakan InvalidateCache, dan Cache Respons kebijakan kami.

Nilai-nilai elemen konfigurasi -- <CacheKey>/<KeyFragment>, <Scope>, dan <Prefix> -- disambungkan untuk membuat ID yang dikaitkan dengan nilai yang Anda masukkan ke dalam {i>cache<i}. 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 <CacheKey> elemen <KeyFragment> yang digabungkan untuk menentukan ID unik untuk entri cache. Nilai {i>KeyFragment <i}dapat berupa literal statis atau diatur dari variabel.
<Scope> atau <Prefix> Gunakan elemen <Scope> atau <Prefix> untuk mengetahui lebih lanjut kunci cache namespace. <Scope> mengenumerasi daftar nilai yang telah ditentukan. Elemen <Prefix> menggantikan <Scope> dengan sebuah nilai pilihan Anda sendiri.

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

cakupan | prefix__keyfragment[__keyfragment]

Dengan Cache Respons , Anda dapat secara opsional menambahkan kunci cache ini dengan nilai dari respons Accept {i>header<i}.

Menggunakan <CacheKey>

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

Elemen <CacheKey> dapat mencakup beberapa Elemen <KeyFragment>. Saat runtime, nilai yang ditentukan oleh Elemen <KeyFragment> digabungkan dengan dua garis bawah di antaranya untuk membentuk bagian dari kunci {i>cache<i}.

Misalnya, konfigurasi berikut akan 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 tersebut di <KeyFragment>, seperti yang ditampilkan di sini:

<KeyFragment ref="variable_name"/>

Misalnya, untuk membuat nilai kunci cache menggabungkan Content-Type pesan permintaan, lakukan seperti 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>

Ini menghasilkan kunci cache yang diakhiri dengan apiAccessToken__application/json__bar.

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

Kunci cache yang berasal dari kueri parameter

Menggunakan variabel seperti request.queryparam.<queryparam_name> dan request.querystring, Anda bisa mengonfigurasi kunci cache sehingga kunci tersebut menyertakan bagian dari string kueri permintaan. Sebagai misalnya, URL berikut menggunakan dua parameter kueri -- param1 dan param2 -- yang dapat Anda gunakan di kunci cache Anda:

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

Elemen <CacheKey> Anda dapat menyertakan 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 disambungkan, seperti dalam berikut ini:

other_key_parts__value1__value2

Perlu diingat bahwa ketika Anda menggunakan variabel untuk memasukkan nilai dari parameter, nilai akan disambungkan dalam urutan yang disarankan oleh urutan elemen <KeyFragment>. Selain itu, perhatikan bahwa Edge hanya akan menggunakan nilai-nilai yang Anda referensikan secara spesifik Elemen <KeyFragment>. Jika daftar parameter kueri permintaan Anda bervariasi, variasi tidak akan diperhitungkan dalam kunci cache.

Alternatifnya adalah dengan 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, kunci tersebut 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 artikel Referensi variabel.

Menggunakan <Cakupan> dan <Prefix>

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

Elemen <Scope> digunakan secara default. Ini adalah enumerasi yang nilainya mulai dari yang luas hingga sempit, dengan yang paling sempit sebagai setelan defaultnya. Nilai {i>default<i} ini digunakan kecuali Anda menentukan nilai lain atau menentukan nilai elemen <Prefix>. Anda dapat mengganti nilai <Scope> menggunakan elemen <Prefix>, dan jadi tentukan nilai khusus untuk ruang nama.

Misalnya, nilai <Scope> "Global" -- ruang lingkup terluas -- mewakili nama organisasi dan lingkungannya. Jadi, jika {i>proxy<i} Anda di-deploy di organisasi yang disebut 'perusahaansaya' dan lingkungan bernama 'prod', nilai awal yang dihasilkan akan berikut ini:

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

Jika Anda menggunakan Cakupan global dengan kunci cache yang didefinisikan di atas, hasilnya adalah sebagai berikut ini:

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

Seperti yang dijelaskan dalam kebijakan LookupCache, cakupan ini dapat dikonfigurasi untuk meningkatkan kekhususan dari Global menjadi Eksklusif. Cakupan Eksklusif adalah spesifik, dan karenanya mewakili risiko minimal dari tumbukan namespace dalam cache yang diberikan. Setiap entri cache dengan cakupan Eksklusif diawali 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