Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat dokumentasi Apigee Edge.
Mengonfigurasi cara nilai yang di-cache harus ditulis saat runtime.
Kebijakan Isi Cache dirancang untuk menulis entri dalam cache tujuan umum jangka pendek. Kebijakan ini digunakan bersama dengan Kebijakan cache Lookup (untuk membaca entri cache) dan Kebijakan Batalkan Validasi Cache (untuk membatalkan validasi entri).
Kebijakan ini adalah Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau penggunaan, bergantung pada lisensi Apigee Anda. Untuk informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.
Untuk menyimpan respons resource backend dalam cache, lihat Kebijakan Cache Respons.
Referensi elemen
Berikut adalah daftar elemen yang dapat Anda konfigurasi pada kebijakan ini.
<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1"> <DisplayName>Populate Cache 1</DisplayName> <Properties/> <CacheKey> <Prefix/> <KeyFragment ref=""/> </CacheKey> <!-- Omit this element if you're using the included shared cache. --> <CacheResource/> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutInSeconds>300</TimeoutInSeconds> </ExpirySettings> <Source>flowVar</Source> </PopulateCache>
Atribut <PopulateCache>
Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Kehadiran |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Secara opsional, gunakan elemen |
T/A | Wajib |
continueOnError |
Tetapkan ke Tetapkan ke |
false | Opsional |
enabled |
Tetapkan ke Tetapkan ke |
benar | Opsional |
async |
Atribut ini tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Gunakan selain atribut name
untuk melabeli kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Kehadiran | Opsional |
Jenis | String |
Elemen <CacheKey>
Mengonfigurasi pointer unik ke bagian data yang disimpan dalam cache.
Kunci cache dibatasi hingga ukuran 2 KB.
<CacheKey> <Prefix>string</Prefix> <KeyFragment ref="variable_name" /> <KeyFragment>literal_string</KeyFragment> </CacheKey>
Default: |
T/A |
Kehadiran: |
Wajib |
Jenis: |
T/A |
<CacheKey>
membuat nama setiap bagian data yang disimpan dalam cache.
Saat runtime, nilai <KeyFragment>
ditambahkan dengan
nilai elemen <Scope>
atau nilai <Prefix>
. Misalnya, hal berikut menghasilkan kunci cache
UserToken__apiAccessToken__
<value_of_client_id>:
<CacheKey> <Prefix>UserToken</Prefix> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" /> </CacheKey>
Anda menggunakan elemen <CacheKey>
bersama dengan
<Prefix>
dan <Scope>
. Untuk informasi selengkapnya, lihat Menggunakan kunci cache.
Elemen<CacheResource>
Menentukan cache tempat pesan akan disimpan.
Hapus elemen ini sepenuhnya jika kebijakan ini (dan kebijakan LookupCache dan InvalidateCache yang sesuai) menggunakan cache bersama yang disertakan.
<CacheResource>cache_to_use</CacheResource>
Default: |
T/A |
Kehadiran: |
Opsional |
Jenis: |
String |
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi cache, lihat Cache tujuan umum.
Elemen <CacheKey>/<KeyFragment>
Menentukan nilai yang harus disertakan dalam kunci cache. Tentukan variabel untuk melakukan dereferensi
dengan atribut ref
, atau nilai tetap.
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
Default: |
T/A |
Kehadiran: |
nol atau lebih |
Jenis: |
T/A |
Saat runtime, Apigee membuat kunci cache dengan menambahkan nilai yang diperoleh dari elemen <Scope>
atau elemen <Prefix>
, ke penyambungan nilai yang di-resolve dari setiap elemen <KeyFragment>
.
Untuk informasi selengkapnya, lihat
Bekerja
dengan kunci cache.
Atribut
Atribut | Jenis | Default | Wajib | Deskripsi |
---|---|---|---|---|
ref | string | Tidak |
Variabel tempat nilai akan diambil. Tidak boleh digunakan jika elemen ini berisi nilai literal. |
Elemen <CacheKey>/<Prefix>
Menentukan nilai tetap yang akan digunakan sebagai awalan kunci cache.
<Prefix>prefix_string</Prefix>
Default: |
T/A |
Kehadiran: |
Opsional |
Jenis: |
String |
Elemen <Prefix>
menggantikan elemen <Scope>
.
Saat runtime, Apigee membuat kunci cache dengan menambahkan nilai yang diperoleh dari elemen <Scope>
atau elemen <Prefix>
, ke penyambungan nilai yang di-resolve dari setiap elemen <KeyFragment>
.
Untuk informasi selengkapnya, lihat
Bekerja
dengan kunci cache.
Elemen <ExpirySettings>
Menentukan kapan masa berlaku entri cache berakhir.
<ExpirySettings> <!-- use exactly one of the following child elements --> <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds> <ExpiryDate ref="date_variable">expiration_date</ExpiryDate> <TimeOfDay ref="time_variable">expiration_time</TimeOfDay> </ExpirySettings>
Default: |
T/A |
Kehadiran: |
Wajib |
Jenis: |
T/A |
Elemen turunan dari <ExpirySettings>
Gunakan tepat satu elemen turunan. Tabel berikut memberikan deskripsi elemen turunan
<ExpirySettings>
:
Elemen Turunan | Deskripsi |
---|---|
<TimeoutInSeconds> |
Jumlah detik setelah masa berlaku entri cache berakhir. <ExpirySettings> <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds> </ExpirySettings> Elemen ini menggantikan elemen |
<ExpiryDate> |
Menentukan tanggal habis masa berlaku entri cache. Tentukan string dalam bentuk
<ExpirySettings> <ExpiryDate ref="var-containing-date">expiry</ExpiryDate> </ExpirySettings> Jika tanggal yang ditentukan sudah berlalu, kebijakan akan menerapkan waktu aktif maksimum ke entri yang di-cache. Durasi maksimumnya adalah 30 hari. |
<TimeOfDay> |
Menentukan waktu habis masa berlaku entri cache.
Tentukan string dalam bentuk <ExpirySettings> <TimeOfDay ref="var-containing-time">expiry</TimeOfDay> </ExpirySettings> |
Anda hanya boleh menentukan salah satu elemen turunan yang mungkin. Jika Anda menentukan beberapa elemen,
urutan prioritasnya adalah:TimeoutInSeconds
, ExpiryDate
,
TimeOfDay
.
Dengan setiap elemen turunan <ExpirySettings>
di atas,
jika Anda menentukan atribut ref
opsional pada elemen turunan, kebijakan akan
mengambil nilai habis masa berlaku dari variabel konteks yang dinamai. Jika variabel tidak ditentukan,
kebijakan akan menggunakan nilai teks literal dari elemen turunan.
Elemen <Scope>
Enumerasi yang digunakan untuk membuat awalan untuk kunci cache saat elemen <Prefix>
tidak disediakan dalam elemen <CacheKey>
.
<Scope>scope_enumeration</Scope>
Default: |
"Eksklusif" |
Kehadiran: |
Opsional |
Jenis: |
String |
Setelan <Scope>
menentukan kunci cache yang ditambahkan di awal sesuai dengan
nilai <Scope>
. Misalnya, kunci cache akan berbentuk seperti berikut saat cakupan ditetapkan ke Exclusive
:
orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]
Jika elemen <Prefix>
ada di <CacheKey>
, elemen tersebut
akan menggantikan nilai elemen <Scope>
. Nilai yang valid mencakup enumerasi
di bawah.
Anda menggunakan elemen <Scope>
bersama dengan
<CacheKey>
dan <Prefix>
. Untuk informasi selengkapnya, lihat Menggunakan kunci cache.
Nilai yang dapat diterima
Global |
Kunci cache dibagikan ke semua proxy API yang di-deploy di lingkungan. Kunci cache ditambahkan di awal dalam bentuk orgName __ envName __. Jika Anda menentukan entri |
Application |
Nama proxy API digunakan sebagai awalan. Kunci cache ditambahkan di awal dalam bentuk orgName__envName__apiProxyName. |
Proxy |
Konfigurasi ProxyEndpoint digunakan sebagai awalan. Kunci cache ditambahkan di awal dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName . |
Target |
Konfigurasi TargetEndpoint digunakan sebagai awalan. Kunci cache ditambahkan di awal dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName . |
Exclusive |
Default. Ini adalah yang paling spesifik, sehingga menimbulkan risiko tabrakan namespace minimal dalam cache tertentu. Awalan adalah salah satu dari dua bentuk berikut:
Kunci cache ditambahkan di awal dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName Misalnya, string lengkap mungkin terlihat seperti ini: apifactory__test__weatherapi__16__default__apiAccessToken |
Elemen <Source>
Menentukan variabel yang nilainya harus ditulis ke cache.
<Source>source_variable</Source>
Default: |
T/A |
Kehadiran: |
Wajib |
Jenis: |
String |
Catatan penggunaan
Gunakan kebijakan ini untuk penyimpanan dalam cache tujuan umum. Saat runtime, kebijakan <PopulateCache>
menulis data dari variabel yang Anda tentukan di elemen <Source>
ke cache yang Anda tentukan di elemen <CacheResource>
. Anda dapat menggunakan elemen <CacheKey>
,
<Scope>
, dan <Prefix>
untuk menentukan kunci yang dapat
Anda gunakan dari kebijakan <LookupCache>
untuk mengambil nilai. Gunakan elemen <ExpirySettings>
untuk mengonfigurasi kapan nilai yang di-cache akan berakhir masa berlakunya.
Penyimpanan dalam cache tujuan umum dengan kebijakan PopulateCache,
kebijakan LookupCache, dan kebijakan InvalidateCache menggunakan
cache yang Anda konfigurasi atau cache bersama yang disertakan secara default. Dalam sebagian besar kasus, cache bersama yang mendasarinya akan memenuhi kebutuhan Anda. Untuk menggunakan cache ini, cukup hapus elemen
<CacheResource>
.
Batas cache: Berbagai batas cache berlaku, seperti nama dan ukuran nilai, jumlah total cache, jumlah item dalam cache, dan masa berlaku.
Untuk mengetahui informasi selengkapnya tentang penyimpanan data yang mendasarinya, lihat Internal cache.
Tentang enkripsi cache
Apigee dan Apigee hybrid (versi 1.4 dan yang lebih baru): Data cache dan KVM selalu dienkripsi.
Kode error
Bagian ini menjelaskan kode error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kerusakan | Status HTTP | Terjadi saat |
---|---|---|
policies.populatecache.EntryCannotBeCached |
500 |
Entri tidak dapat di-cache. Objek pesan yang di-cache bukan instance class yang bersifat Serializable. |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab | Perbaiki |
---|---|---|
InvalidCacheResourceReference |
Error ini terjadi jika elemen <CacheResource> dalam kebijakan PopulateCache ditetapkan ke
nama yang tidak ada di lingkungan tempat proxy API di-deploy. |
build |
CacheNotFound |
Cache yang ditentukan dalam elemen <CacheResource> tidak ada. |
build |
Variabel error
Variabel ini ditetapkan saat kebijakan ini memicu error. Untuk mengetahui informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Dari mana | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama error, seperti yang tercantum dalam tabel Runtime errors di atas. Nama error adalah bagian terakhir dari kode error. | fault.name = "EntryCannotBeCached" |
populatecache.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. | populatecache.POP-CACHE-1.failed = true |
Contoh respons error
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
Contoh aturan error
<FaultRule name="Populate Cache Fault"> <Step> <Name>AM-EntryCannotBeCached</Name> <Condition>(fault.name Matches "EntryCannotBeCached") </Condition> </Step> <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition> </FaultRule>