Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat
Dokumentasi Apigee Edge.
{i>Caching<i} adalah proses menyimpan data sementara di area penyimpanan yang disebut {i>cache for future <i} alamat IP internal. Menyimpan data ke dalam cache memberikan manfaat performa yang signifikan karena:
- Memungkinkan pengambilan data yang lebih cepat
- Mengurangi waktu pemrosesan dengan menghindari pembuatan ulang data berulang kali
- Mencegah permintaan API mengenai server backend dan dengan demikian mengurangi overhead pada server backend
- Memungkinkan pemanfaatan resource sistem/aplikasi yang lebih baik
- Meningkatkan waktu respons API
Setiap kali kita harus sering mengakses beberapa data yang tidak terlalu sering berubah, kita sangat sarankan untuk menggunakan {i> cache<i} untuk menyimpan data ini.
Apigee memberikan kemampuan untuk menyimpan data dalam cache saat runtime untuk persistensi dan lebih cepat atau pengambilan. Fitur penyimpanan cache tersedia melalui kebijakan IsiCache, Kebijakan LookupCache, kebijakan InvalidateCache, dan kebijakanResponseCache.
Di bagian ini, mari kita lihat kebijakan Cache Respons. Kebijakan Cache Respons di Apigee memungkinkan Anda meng-cache respons dari server backend. Jika aplikasi klien membuat permintaan ke resource backend yang sama berulang kali dan resource akan diperbarui secara berkala, maka kami dapat meng-cache respons tersebut menggunakan kebijakan ini. Kebijakan Cache Respons membantu mengembalikan respons yang di-cache dan akibatnya menghindari penerusan permintaan ke server backend jika tidak perlu.
Kebijakan Cache Respons:
- Mengurangi jumlah permintaan yang mencapai backend
- Mengurangi bandwidth jaringan
- Meningkatkan performa API dan waktu respons
Anti-pola
KebijakanResponseCache memungkinkan Anda meng-cache respons HTTP dengan kemungkinan kode Status, secara {i>default<i}. Artinya, respons berhasil dan error dapat di-cache.
Berikut adalah contoh kebijakan Cache Respons dengan konfigurasi default:
<!-- /antipatterns/examples/1-1.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseCache async="false" continueOnError="false" enabled="true" name="TargetServerResponseCache"> <DisplayName>TargetServer ResponseCache</DisplayName> <CacheKey> <Key Fragment ref="request.uri" /></CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutInSec ref="flow.variable.here">600</TimeoutInSec> </ExpirySettings> <CacheResource>targetCache</CacheResource> </ResponseCache>
Kebijakan Cache Respons menyimpan respons error dalam cache dalam setelan default-nya konfigurasi Anda. Namun, tidak disarankan untuk meng-cache respons error tanpa banyak pemikiran tentang implikasi buruknya karena:
- Skenario 1: Kegagalan terjadi untuk periode sementara yang tidak diketahui, dan kami
dapat terus mengirimkan respons error
karena penyimpanan cache bahkan setelah masalah diperbaiki
ATAU
- Skenario 2: Kegagalan akan diamati selama jangka waktu tertentu, maka kita harus memodifikasi kode untuk menghindari cache respons setelah masalah diperbaiki
Mari kita jelaskan dengan melihat dua skenario ini secara lebih rinci.
Skenario 1: Kegagalan backend/resource sementara
Pertimbangkan bahwa kegagalan di server backend disebabkan oleh salah satu alasan berikut:
- Glitch jaringan sementara
- Server backend sangat sibuk dan tidak dapat menanggapi permintaan untuk titik
- Resource backend yang diminta mungkin dihapus/tidak tersedia untuk sementara waktu
- Server backend merespons lambat karena waktu pemrosesan yang tinggi untuk sementara waktu, dll.
Dalam semua kasus ini, kegagalan dapat terjadi selama jangka waktu yang tidak diketahui, lalu kami dapat mulai mendapatkan respons yang sukses. Jika kami meng-cache respons error, maka kami dapat terus mengirimkan respons error kepada pengguna meskipun masalah dengan server backend telah diperbaiki.
Skenario 2: Kegagalan backend/resource yang berkepanjangan atau diperbaiki
Misalkan kita mengetahui kegagalan di backend terjadi selama jangka waktu yang tetap. Contohnya, Anda menyadari bahwa:
- Resource backend tertentu tidak akan tersedia selama 1 jam
ATAU
- Server backend dihapus/tidak tersedia selama 24 jam karena kegagalan situs tiba-tiba, masalah penskalaan, pemeliharaan, upgrade, dll.
Dengan informasi ini, kita dapat menetapkan waktu habis masa berlaku cache dengan tepat di Cache Respons agar kita tidak meng-cache respons kesalahan untuk waktu yang lebih lama. Namun, setelah server/resource backend kembali tersedia, kita harus mengubah kebijakan untuk menghindari caching respons error yang ada. Hal ini karena jika terjadi kegagalan sementara/satu kali dari backend server, kita akan membuat {i>cache<i} respons dan akan berakhir dengan masalah yang dijelaskan dalam skenario 1 di atas.
Dampak
- Menyimpan respons error dalam cache dapat menyebabkan respons error dikirim, bahkan setelah masalah di-resolve di server backend
- Pengguna mungkin akan berusaha keras untuk memecahkan penyebab suatu masalah tanpa menyadari bahwa hal ini disebabkan oleh respons error yang disimpan dalam cache server backend
Praktik terbaik
- Jangan simpan respons error di cache respons. Pastikan bahwa
Elemen
<ExcludeErrorResponse>
disetel ketrue
di Kebijakan ResponsCache untuk mencegah respons error disimpan ke cache seperti yang ditunjukkan pada kode di bawah cuplikan kode. Dengan konfigurasi ini hanya memberikan respons untuk kode keberhasilan {i>default<i} 200 hingga 205 (kecuali kode berhasil diubah) akan di-cache.<!-- /antipatterns/examples/1-2.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseCache async="false" continueOnError="false" enabled="true" name="TargetServerResponseCache"> <DisplayName>TargetServerResponseCache</DisplayName> <CacheKey> <KeyFragment ref="request.uri" /> </CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutinSec ref="flow.variable.here">600</TimeoutinSec> </ExpirySettings> <CacheResource>targetCache</CacheResource> <ExcludeErrorResponse>true</ExcludeErrorResponse> </ResponseCache>
- Jika Anda diwajibkan untuk menyimpan respons error ke dalam cache karena alasan tertentu,
dapat menentukan durasi waktu maksimum/persis kapan kegagalan akan diamati (jika
mungkin):
- Tetapkan Waktu habis masa berlaku dengan tepat untuk memastikan bahwa Anda tidak menyimpan respons error dalam cache lebih lama dari waktu kegagalan terlihat.
- Gunakan kebijakan ResponseCache untuk meng-cache respons error tanpa
Elemen
<ExcludeErrorResponse>
.
Lakukan ini hanya jika Anda benar-benar yakin bahwa kegagalan server backend bukan karena periode singkat/sementara.
- Apigee tidak merekomendasikan caching respons 5xx dari server backend.