Kebijakan PopulateCache

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

Mengonfigurasi cara penulisan nilai yang di-cache pada saat runtime.

Kebijakan Isi Cache dirancang untuk menulis entri dalam cache tujuan umum jangka pendek. ID ini digunakan bersama dengan kebijakan Cache Pencarian (untuk membaca entri cache) dan kebijakan Cache Tidak Valid (untuk membatalkan validasi entri).

Untuk menyimpan respons resource backend dalam cache, lihat kebijakan Cache Respons.

Referensi elemen

Yang berikut ini mencantumkan 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 <FILLINCache>

Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:

Atribut Deskripsi Default Ketersediaan
name

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Atau, gunakan elemen <DisplayName> untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural-language yang berbeda.

T/A Wajib
continueOnError

Setel ke false untuk menampilkan error jika kebijakan gagal. Ini adalah perilaku yang wajar untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur tetap berlanjut bahkan setelah kebijakan gagal.

false Opsional
enabled

Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk menonaktifkan kebijakan. Kebijakan tidak akan diterapkan meskipun tetap melekat pada alur.

true Opsional
async

Atribut ini sudah tidak digunakan lagi.

false Tidak digunakan lagi

Elemen <DisplayName>

Gunakan selain atribut name untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural-language yang berbeda.

<DisplayName>Policy Display Name</DisplayName>
Default

T/A

Jika Anda menghapus elemen ini, nilai atribut name kebijakan akan digunakan.

Ketersediaan Opsional
Jenis String

Elemen <CacheKey>

Mengonfigurasi pointer unik ke bagian data yang disimpan dalam cache.

Ukuran kunci cache dibatasi hingga 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, kode 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 akan disimpan.

Hapus elemen ini sepenuhnya jika kebijakan ini (serta kebijakan LookupCache dan InvalidateCache yang terkait) menggunakan cache bersama yang disertakan.

<CacheResource>cache_to_use</CacheResource>

Default:

T/A

Kehadiran:

Opsional

Jenis:

String

Untuk informasi selengkapnya tentang cara mengonfigurasi cache, lihat Membuat dan mengedit cache lingkungan.

Elemen <CacheKey>/<KeyFragment>

Menentukan nilai yang harus disertakan dalam kunci cache, yang 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) digabungkan 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
referensi string Tidak

Variabel yang digunakan untuk mendapatkan nilai. 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 dienumerasi <Scope>. Jika ditentukan, <Prefix> akan 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 akan berakhir 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 dari <ExpirySettings>

Gunakan hanya satu elemen turunan. Tabel berikut memberikan deskripsi elemen turunan <ExpirySettings>:

Elemen Turunan Deskripsi
<TimeoutInSeconds>

Jumlah detik hingga masa berlaku entri cache akan berakhir.

<ExpirySettings>
  <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds>
</ExpirySettings>

Elemen ini menggantikan elemen TimeoutInSec yang kini tidak digunakan lagi.

<ExpiryDate>

Menentukan tanggal berakhirnya entri cache. Tentukan string dalam bentuk mm-dd-yyyy.

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

Jika tanggal yang ditentukan berada di masa lalu, kebijakan akan menerapkan waktu aktif maksimum ke entri yang di-cache. Durasi maksimum ini adalah 30 hari.

<TimeOfDay>

Menentukan waktu saat entri cache akan berakhir masa berlakunya. Tentukan string dalam format HH:mm:ss, dengan HH mewakili jam pada model waktu 24 jam, dalam zona waktu UTC. Misalnya, pukul 14.30:00 menunjukkan pukul 2.30 pada siang hari.

<ExpirySettings>
  <TimeOfDay ref="var-containing-time">expiry</TimeOfDay>
</ExpirySettings>

Anda harus menentukan hanya 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 dari elemen turunan.

Elemen <Scope>

Enumerasi yang digunakan untuk membuat awalan untuk kunci cache jika elemen <Prefix> tidak disediakan dalam elemen <CacheKey>.

<Scope>scope_enumeration</Scope>

Default:

"Eksklusif"

Kehadiran:

Opsional

Jenis:

String

Setelan <Scope> menentukan kunci cache yang ditambahkan sesuai dengan nilai <Scope>. Misalnya, kunci cache akan menggunakan bentuk 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 ini.

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 <CacheKey> dengan apiAccessToken <KeyFragment> dan cakupan <Global>, setiap entri akan disimpan sebagai orgName__envName__apiAccessToken, yang diikuti dengan nilai token akses yang diserialisasi. Untuk proxy API yang di-deploy di lingkungan yang disebut 'test' di organisasi yang disebut 'apifactory', token akses akan disimpan dengan kunci cache berikut: apifactory__test__apiAccessToken.

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 depan dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .

Target

Konfigurasi TargetEndpoint digunakan sebagai awalan.

Kunci cache ditambahkan di awal formulir orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName .

Exclusive

Default. Ini adalah hal yang paling spesifik, sehingga meminimalkan risiko benturan namespace dalam cache tertentu.

Awalan adalah salah satu dari dua bentuk:

  • Jika kebijakan disertakan ke alur ProxyEndpoint, awalan akan berupa ApiProxyName_ProxyEndpointName.
  • Jika kebijakan dilampirkan pada TargetEndpoint, awalan akan berupa ApiProxyName_TargetName.

Kunci cache ditambahkan di awal formulir 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 cache tujuan umum. Saat runtime, kebijakan <PopulateCache> menulis data dari variabel yang Anda tentukan dalam elemen <Source> ke cache yang ditentukan dalam elemen <CacheResource>. Anda dapat menggunakan elemen <CacheKey>, <Scope>, dan <Prefix> untuk menentukan kunci yang dapat digunakan dari kebijakan <LookupCache> untuk mengambil nilai. Gunakan elemen <ExpirySettings> untuk mengonfigurasi kapan masa berlaku nilai yang disimpan dalam cache harus berakhir.

Cache tujuan umum dengan kebijakan AutofillCache, kebijakan LookupCache, dan kebijakan InvalidateCache menggunakan cache yang Anda konfigurasi atau cache bersama yang disertakan secara default. Pada umumnya, cache bersama yang mendasarinya harus memenuhi kebutuhan Anda. Untuk menggunakan cache ini, cukup hapus elemen <CacheResource>.

Batas cache: Ada berbagai batas cache, seperti nama dan ukuran nilai, jumlah total cache, jumlah item dalam cache, dan masa berlaku.

Untuk informasi selengkapnya tentang penyimpanan data pokok, lihat Internal cache. Untuk informasi selengkapnya tentang cara mengonfigurasi cache, lihat Membuat dan mengedit cache lingkungan.

Tentang enkripsi cache

Edge for Public Cloud: Cache hanya dienkripsi di organisasi yang mendukung PCI dan HIPAA. Enkripsi untuk organisasi tersebut dikonfigurasi selama penyediaan organisasi.

Kode error

Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan dan variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.

Error runtime

Error ini dapat terjadi saat kebijakan dieksekusi.

Kode kesalahan Status HTTP Terjadi saat
policies.populatecache.EntryCannotBeCached 500 Entri tidak dapat di-cache. Objek pesan yang di-cache bukan merupakan instance class 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 AutoFillCache disetel ke nama yang tidak ada di lingkungan tempat proxy API di-deploy.
CacheNotFound Cache yang ditentukan dalam elemen <CacheResource> tidak ada.

Variabel kesalahan

Variabel ini ditetapkan saat kebijakan ini memicu error. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.

Variabel Dari 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>