Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Mengonfigurasi cara nilai yang di-cache harus ditulis saat runtime.
Kebijakan Populate Cache dirancang untuk menulis entri dalam cache tujuan umum jangka pendek. Kebijakan ini digunakan bersama dengan Lookup Cache policy (untuk membaca entri cache) dan Invalidate Cache policy (untuk menginvalidasi entri).
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 | Ketersediaan |
|---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Secara opsional, gunakan elemen |
T/A | Wajib |
continueOnError |
Tetapkan ke Setel ke |
salah | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini tidak digunakan lagi. |
salah | Tidak digunakan lagi |
<DisplayName> elemen
Gunakan selain atribut name untuk memberi label kebijakan di
editor proxy UI dengan nama natural language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
| Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
|---|---|
| Ketersediaan | 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> diawali dengan nilai elemen
<Scope> atau nilai <Prefix>. Misalnya, 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 mengetahui informasi selengkapnya, lihat Bekerja dengan kunci cache.
Elemen <CacheResource>
Menentukan cache tempat pesan harus disimpan.
Hapus elemen ini sepenuhnya jika kebijakan ini (dan kebijakan LookupCache serta 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 Membuat dan mengedit cache lingkungan.
Elemen <CacheKey>/<KeyFragment>
Menentukan nilai yang harus disertakan dalam kunci cache, sehingga membuat namespace untuk mencocokkan permintaan dengan respons yang di-cache.
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
|
Default: |
T/A |
|
Kehadiran: |
Opsional |
|
Jenis: |
T/A |
Ini dapat berupa kunci (nama statis yang Anda berikan) atau nilai (entri dinamis yang ditetapkan dengan mereferensikan variabel). Semua fragmen yang ditentukan digabungkan (ditambah awalan) untuk membuat kunci cache.
<KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" />
Anda menggunakan elemen <KeyFragment> bersama dengan
<Prefix> dan <Scope>. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan kunci cache.
Atribut
| Atribut | Jenis | Default | Wajib | Deskripsi |
|---|---|---|---|---|
| ref | string | Tidak |
Variabel yang akan diambil nilainya. Tidak boleh digunakan jika elemen ini berisi nilai literal. |
Elemen <CacheKey>/<Prefix>
Menentukan nilai yang akan digunakan sebagai awalan kunci cache.
<Prefix>prefix_string</Prefix>
|
Default: |
T/A |
|
Kehadiran: |
Opsional |
|
Jenis: |
String |
Gunakan nilai ini, bukan <Scope>, jika Anda ingin menentukan nilai Anda sendiri, bukan nilai yang di-enumerasi <Scope>. Jika ditentukan,
<Prefix> menambahkan nilai kunci cache untuk entri yang ditulis ke cache. Nilai elemen
<Prefix> menggantikan nilai elemen <Scope>.
Anda menggunakan elemen <Prefix> bersama dengan
<CacheKey> dan <Scope>. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan kunci cache.
Elemen <ExpirySettings>
Menentukan kapan entri cache harus habis masa berlakunya. Jika ada, <TimeoutInSeconds> akan menggantikan <TimeOfDay> dan <ExpiryDate>.
<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 <ExpirySettings>
Gunakan tepat satu elemen turunan. Tabel berikut memberikan deskripsi elemen turunan dari
<ExpirySettings>:
| Elemen Turunan | Deskripsi |
|---|---|
<TimeoutInSeconds> |
Jumlah detik setelah entri cache harus 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 format
<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 dalam sehari saat entri cache harus habis masa berlakunya.
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 masa berlaku dari variabel konteks bernama. Jika variabel tidak ditentukan,
kebijakan akan menggunakan nilai teks literal 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 berikut saat
cakupan disetel 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 mengetahui informasi selengkapnya, lihat Bekerja dengan kunci cache.
Nilai yang dapat diterima
Global |
Kunci cache dibagikan ke semua proxy API yang di-deploy di lingkungan. Kunci cache ditambahkan dalam bentuk orgName __ envName __. Jika Anda menentukan entri |
Application |
Nama proxy API digunakan sebagai awalan. Kunci cache diawali dalam bentuk orgName__envName__apiProxyName. |
Proxy |
Konfigurasi ProxyEndpoint digunakan sebagai awalan. Kunci cache diawali dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName . |
Target |
Konfigurasi TargetEndpoint digunakan sebagai awalan. Kunci cache yang ditambahkan dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName . |
Exclusive |
Default. Ini adalah yang paling spesifik, sehingga meminimalkan risiko konflik namespace dalam cache tertentu. Awalan memiliki salah satu dari dua bentuk berikut:
Kunci cache yang ditambahkan dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName Misalnya, string lengkapnya 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 caching 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 harus berakhir.
Penyimpanan cache serbaguna 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 ukuran nama dan nilai, total jumlah cache, jumlah item dalam cache, dan masa berlaku.
Untuk mengetahui informasi selengkapnya tentang penyimpanan data pokok, lihat Internal cache. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi cache, lihat Membuat dan mengedit cache lingkungan.
Tentang enkripsi cache
Edge untuk Cloud Publik: Cache dienkripsi hanya di organisasi yang mendukung PCI- dan HIPAA. Enkripsi untuk organisasi tersebut dikonfigurasi selama penyediaan organisasi.
Kode error
Bagian ini menjelaskan kode kesalahan dan pesan kesalahan yang dikembalikan dan variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu kesalahan. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Penanganan kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dijalankan.
| Kode error | Status HTTP | Terjadi saat |
|---|---|---|
policies.populatecache.EntryCannotBeCached |
500 | Entri tidak dapat di-cache. Objek pesan yang di-cache bukan merupakan instance yang dapat diserialisasi. |
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 Mengisi Cache 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 kesalahan
Variabel ini ditetapkan saat kebijakan ini memicu error. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
| Variabel | Di mana | Contoh |
|---|---|---|
fault.name="fault_name" |
fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. | fault.name = "EntryCannotBeCached" |
populatecache.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | 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 kesalahan
<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>