kebijakan filledCache

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Baca dokumentasi Apigee Edge.

ikon kebijakan

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 entri).

Kebijakan ini merupakan Kebijakan yang dapat diperluas, dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau pemanfaatan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.

Untuk meng-cache respons resource backend, lihat kebijakan Cache Respons.

Referensi elemen

Berikut ini daftar elemen yang dapat Anda konfigurasi di 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 <filledCache>

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

Atribut Deskripsi Default Kehadiran
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 Diperlukan
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. Lihat juga:

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.

Kehadiran Opsional
Jenis String

Elemen <CacheKey>

Mengonfigurasi pointer unik ke bagian data yang disimpan dalam cache.

Kunci cache dibatasi hingga 2 KB.

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

Default:

T/A

Kehadiran:

Diperlukan

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 harus 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 informasi selengkapnya tentang cara mengonfigurasi cache, lihat Cache tujuan umum.

Elemen <CacheKey>/<KeyFragment>

Menentukan nilai yang harus disertakan dalam kunci cache. Tentukan variabel yang akan dihilangkan referensinya 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 mengawali nilai yang diperoleh dari elemen <Scope> atau <Prefix>, ke penyambungan nilai yang di-resolve dari setiap elemen <KeyFragment>. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan kunci cache.

Atribut

Atribut Jenis Default Diperlukan Deskripsi
referensi string Tidak

Variabel yang digunakan untuk mendapatkan nilai. Tidak boleh digunakan jika elemen ini berisi nilai literal.

Elemen <CacheKey>/<Prefix>

Menentukan nilai tetap untuk digunakan sebagai awalan kunci cache.

<Prefix>prefix_string</Prefix>

Default:

T/A

Kehadiran:

Opsional

Jenis:

String

Elemen <Prefix> mengganti elemen <Scope>.

Saat runtime, Apigee membuat kunci cache dengan mengawali nilai yang diperoleh dari elemen <Scope> atau <Prefix>, ke penyambungan nilai yang di-resolve dari setiap elemen <KeyFragment>. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan kunci cache.

Elemen <ExpirySettings>

Menentukan kapan masa berlaku entri cache akan 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:

Diperlukan

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 akan berakhir.

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

Elemen ini menggantikan elemen TimeoutInSec yang kini tidak digunakan lagi.

<ExpiryDate>

Menentukan tanggal kapan entri cache akan berakhir masa berlakunya. Tentukan string dalam format mm-dd-yyyy.

<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 saat entri cache harus berakhir. Tentukan string dalam format HH:mm:ss, dengan HH mewakili jam pada model 24 jam, dalam zona waktu UTC. Misalnya, 14.30:00 menyiratkan pukul 2.30 siang.

<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 berakhir 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 berbentuk seperti berikut jika 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, diikuti dengan nilai token akses yang diserialisasi. Untuk proxy API yang di-deploy di lingkungan yang disebut 'test' dalam 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 dalam bentuk orgName__envName__apiProxyName.

Proxy

Konfigurasi ProxyEndpoint digunakan sebagai awalan.

Kunci cache ditambahkan sebelumnya dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .

Target

Konfigurasi TargetEndpoint digunakan sebagai awalan.

Kunci cache ditambahkan sebelumnya dalam bentuk orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName .

Exclusive

Default. Hal ini adalah yang paling spesifik, sehingga tidak menimbulkan risiko konflik namespace dalam cache yang ditentukan.

Awalan adalah salah satu dari dua bentuk:

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

Kunci cache ditambahkan di depan 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:

Diperlukan

Jenis:

String

Catatan penggunaan

Gunakan kebijakan ini untuk penyimpanan 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 Anda gunakan dari kebijakan <LookupCache> untuk mengambil nilai. Gunakan elemen <ExpirySettings> untuk mengonfigurasi kapan masa berlaku nilai yang di-cache harus berakhir.

Cache tujuan umum dengan kebijakan filledCache, 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: Berbagai batas cache berlaku, 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.

Tentang enkripsi cache

Apigee dan Apigee Hybrid (versi 1.4 dan yang lebih baru): Data cache dan KVM selalu dienkripsi.

Kode error

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP Status Occurs when
policies.populatecache.EntryCannotBeCached 500 An entry cannot be cached. The message object being cached is not an instance of a class that is Serializable.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference This error occurs if the <CacheResource> element in the PopulateCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
CacheNotFound The cache specified in the <CacheResource> element does not exist.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. populatecache.POP-CACHE-1.failed = true

Example error response

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

Example fault rule

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