Kebijakan PopulateCache

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

Mengonfigurasi cara penulisan nilai yang di-cache pada runtime.

Kebijakan Isi Cache dirancang untuk menulis entri dalam cache tujuan umum jangka pendek. Ini digunakan bersama dengan Lookup Kebijakan cache (untuk membaca entri cache) dan Batalkan kebijakan Cache (untuk membatalkan validasi entri).

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

Referensi elemen

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

&lt;PopulateCache&gt; atribut

Tabel berikut menjelaskan atribut yang umum 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.

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

T/A Wajib
continueOnError

Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Diharapkan untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur dapat dilanjutkan bahkan setelah kebijakan gagal.

salah Opsional
enabled

Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk menonaktifkan kebijakan. Kebijakan ini tidak akan ditegakkan meskipun tetap terikat pada alur.

true Opsional
async

Atribut ini tidak digunakan lagi.

salah Tidak digunakan lagi

&lt;DisplayName&gt; 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 name kebijakan akan menjadi data

Ketersediaan Opsional
Jenis String

&lt;CacheKey&gt; elemen

Mengonfigurasi pointer unik ke sepotong 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:

Wajib

Jenis:

T/A

<CacheKey> menyusun nama setiap bagian data yang disimpan dalam di cache oleh pengguna.

Saat runtime, nilai <KeyFragment> ditambahkan dengan awalan Nilai elemen <Scope> atau nilai <Prefix>. Misalnya, berikut menghasilkan kunci cache UserToken__apiAccessToken__&lt;value_of_client_id&gt;:

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

&lt;CacheResource&gt; elemen

Menentukan cache tempat pesan akan disimpan.

Hilangkan sepenuhnya elemen ini jika kebijakan ini (dan LookupCache Anda yang terkait dan Kebijakan InvalidateCache) 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 lingkungan cache.

&lt;CacheKey&gt;/&lt;KeyFragment&gt; elemen

Menentukan nilai yang harus disertakan dalam kunci cache, membuat namespace untuk pencocokan terhadap respons yang di-cache.

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

Default:

T/A

Kehadiran:

Opsional

Jenis:

T/A

Ini bisa berupa kunci (nama statis yang Anda berikan) atau nilai (entri dinamis yang ditetapkan oleh merujuk ke variabel). Semua fragmen yang ditentukan digabungkan (ditambah awalan) yang digabungkan menjadi 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.

&lt;CacheKey&gt;/&lt;Prefix&gt; elemen

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 ingin menentukan nilai Anda sendiri bukan nilai yang dienumerasi <Scope>. Jika ditentukan, <Prefix> menambahkan nilai kunci cache untuk entri yang ditulis ke cache. J Nilai elemen <Prefix> mengganti elemen <Scope> dengan sejumlah nilai.

Anda menggunakan elemen <Prefix> bersama dengan <CacheKey> dan <Scope>. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan kunci cache.

&lt;ExpirySettings&gt; elemen

Menentukan kapan entri cache harus berakhir. Kapan ada, <TimeoutInSeconds> penggantian <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>

Menggunakan tepat satu elemen turunan. Tabel berikut memberikan deskripsi dari elemen turunan dari <ExpirySettings>:

Elemen Turunan Deskripsi
<TimeoutInSeconds>

Jumlah detik saat entri cache berakhir.

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

Elemen ini menggantikan elemen TimeoutInSec yang sekarang tidak digunakan lagi.

<ExpiryDate>

Menentukan tanggal saat entri cache harus berakhir. Menentukan string dalam formulir 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 maksimum ini adalah 30 hari.

<TimeOfDay>

Menentukan waktu saat entri cache harus berakhir. Tentukan string dalam bentuk HH:mm:ss, dengan HH mewakili jam dalam format 24 jam, dalam zona waktu UTC. Misalnya, 14:30:00 menyiratkan 14.30 di sore hari.

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

Anda harus menetapkan 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 menetapkan atribut ref opsional pada elemen turunan, kebijakan akan mengambil nilai masa berakhir dari variabel konteks bernama. Jika variabel tidak ditentukan, kebijakan menggunakan nilai teks literal dari elemen turunan.

&lt;Scope&gt; elemen

Enumerasi yang digunakan untuk membuat awalan untuk kunci cache saat <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 {i>cache<i} akan berupa bentuk berikut ketika cakupan ditetapkan ke Exclusive:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]

Jika elemen <Prefix> ada di <CacheKey>, elemen tersebut 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 adalah ditambahkan dalam formulir orgName __ envName __.

Jika Anda menentukan entri <CacheKey> dengan <KeyFragment> apiAccessToken dan cakupan <Global>, setiap entri disimpan sebagai orgName__envName__apiAccessToken, diikuti oleh token akses yang diserialisasi. Untuk proxy API yang di-deploy di lingkungan yang disebut 'tes' dalam organisasi yang disebut {i>'apifactory'<i}, token akses akan disimpan di bawah 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 dalam formulir orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .

Target

Konfigurasi TargetEndpoint digunakan sebagai awalan.

Kunci cache ditambahkan dalam formulir orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName .

Exclusive

Default. Ini adalah yang paling spesifik, dan dengan demikian meminimalkan risiko namespace tabrakan dalam {i> cache<i} yang diberikan.

Awalan adalah salah satu dari dua bentuk:

  • Jika kebijakan ini disertakan ke alur ProxyEndpoint, awalannya adalah dari ApiProxyName_ProxyEndpointName.
  • Jika kebijakan dilampirkan pada TargetEndpoint, awalan harus berupa bentuk ApiProxyName_TargetName.

Kunci cache ditambahkan dalam formulir orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

Misalnya, string lengkap mungkin terlihat seperti ini:

apifactory__test__weatherapi__16__default__apiAccessToken
.

&lt;Source&gt; elemen

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 cache tujuan umum. Pada saat runtime, Kebijakan <PopulateCache> menulis data dari variabel yang Anda tentukan di <Source> ke cache yang Anda tentukan dalam <CacheResource>. Anda dapat menggunakan <CacheKey>, <Scope>, dan <Prefix> untuk menentukan kunci yang dapat digunakan dari kebijakan <LookupCache> untuk mengambil nilainya. Gunakan <ExpirySettings> untuk mengonfigurasi kapan nilai yang di-cache akan habis masa berlakunya.

Penyimpanan cache tujuan umum dengan kebijakan filledCache, kebijakan LookupCache, dan kebijakan InvalidateCache baik {i>cache<i} yang Anda konfigurasi atau {i> cache bersama<i} yang disertakan secara default. Dalam kebanyakan kasus, cache bersama yang mendasarinya akan memenuhi kebutuhan Anda. Untuk menggunakan cache ini, cukup hilangkan Elemen <CacheResource>.

Batas cache: Berbagai batas cache diterapkan, seperti nama dan ukuran nilai, jumlah total {i>cache<i}, jumlah item dalam {i>cache<i}, dan kedaluwarsa.

Untuk mengetahui informasi selengkapnya tentang penyimpanan data pokok, lihat Cache internal. Untuk informasi selengkapnya tentang mengonfigurasi cache, lihat Membuat dan mengedit cache lingkungan.

Tentang enkripsi cache

Edge for Public Cloud: Cache hanya dienkripsi di PCI- dan mendukung HIPAA tidak di organisasi lain. Enkripsi untuk organisasi tersebut dikonfigurasikan selama organisasi penyediaan resource.

Kode error

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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>