Menangani 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, 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 Isi Cache, kebijakan LookupCache, kebijakan InvalidateCache, dan kebijakan Cache Respons.

Nilai elemen konfigurasi -- <CacheKey>/<KeyFragment>, <Scope>, dan <Prefix> -- digabungkan untuk membuat ID yang terkait dengan nilai yang Anda masukkan ke dalam cache. Gunakan 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 bagi entri cache. Nilai KeyFragment dapat berupa literal statis atau ditetapkan dari variabel.
<Scope> atau <Prefix> Gunakan elemen <Scope> atau <Prefix> untuk kunci cache namespace lebih lanjut. <Scope> mengenumerasi daftar nilai yang telah ditentukan. Elemen <Prefix> mengganti <Scope> dengan nilai pilihan Anda sendiri.

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

cakupan | prefix__keyfragment[__keyfragment]

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

Menggunakan <CacheKey>

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

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

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 dalam elemen <KeyFragment>, seperti yang ditampilkan di sini:

<KeyFragment ref="variable_name"/>

Misalnya, agar nilai kunci cache menyertakan Jenis Konten pesan permintaan, lakukan hal 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, 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 variabel seperti request.queryparam.<queryparam_name> dan request.querystring, Anda dapat mengonfigurasi kunci cache agar 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> dapat menggabungkan nilai tersebut dengan konfigurasi seperti berikut:

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

Pada 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 rujuk secara khusus dengan elemen <KeyFragment>. Jika daftar parameter kueri permintaan Anda bervariasi, variasinya tidak akan diperhitungkan dalam kunci cache.

Alternatifnya, Anda dapat 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.

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

Menggunakan <Scope> dan <Prefix>

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

Elemen <Scope> digunakan secara default. Ini adalah enumerasi yang nilainya berkisar dari luas ke 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 <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 yang disebut 'perusahaansaya' dan lingkungan bernama 'prod', nilai awalan yang dihasilkan adalah sebagai 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, cakupannya dapat dikonfigurasi untuk meningkatkan kekhususan dari Global ke Eksklusif. Cakupan eksklusif adalah cakupan yang paling spesifik, sehingga meminimalkan risiko benturan namespace dalam cache tertentu. 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