Bagikan melalui


Gambaran Umum Cache

BERLAKU UNTUK: Semua tingkatan manajemen API

Konfigurasikan caching di Azure API Management untuk menyimpan dan mengambil respons atas permintaan API dan informasi terkait. Dengan menyimpan respons dari layanan backend, API Management dapat melayani permintaan identik berikutnya langsung dari cache, mengurangi kebutuhan untuk memanggil layanan backend berulang kali. Caching dapat meningkatkan performa API, mengurangi beban backend, dan meningkatkan pengalaman keseluruhan bagi pelanggan yang mengakses API melalui API Management.

Artikel ini menjelaskan opsi caching di API Management, dan menyoroti skenario penting serta pertimbangan konfigurasi.

Penting

Caching memerlukan baik layanan cache - baik cache internal yang diterapkan secara otomatis sebagai bagian dari layanan Manajemen API, atau cache eksternal yang Anda terapkan - dan konfigurasi kebijakan cache untuk menentukan bagaimana cache harus diterapkan ke permintaan API.

Opsi layanan caching

Azure API Management menyediakan opsi layanan caching berikut untuk memenuhi berbagai persyaratan performa dan arsitektur.

  • Internal (bawaan): Cache internal (bawaan) secara otomatis disediakan di semua tier layanan API Management (kecuali tier Konsumsi). Implementasi cache internal berbeda antara tingkat klasik (Pengembang, Dasar, Standar, dan Premium) dan tingkat v2 (Dasar v2, Standar v2, dan Premium v2). Cache bawaan di tingkat v2 memberikan keandalan yang ditingkatkan. Pelajari selengkapnya tentang caching dengan cache bawaan.

  • Cache eksternal : Untuk performa dan persistensi yang ditingkatkan, konfigurasikan cache eksternal yang kompatibel dengan Redis eksternal, seperti Azure Managed Redis, untuk digunakan dengan tingkat layanan atau gateway API Management apa pun. Pelajari selengkapnya tentang menyiapkan cache eksternal dengan Azure Managed Redis.

Tabel berikut membandingkan kemampuan cache internal dan eksternal.

Capability Internasional External
Provisi dan manajemen otomatis ✔️
Biaya tambahan ✔️
Konfigurasi kustom ✔️
Ketersediaan di semua tingkatan dan gateway Tidak tersedia di tingkat Konsumsi atau gateway yang dihost sendiri ✔️
Penyimpanan regional Cache disediakan di wilayah yang sama dengan instans API Management dan dibagikan di antara unit skala.

Dalam sebuah penyebaran multi-region, setiap wilayah memiliki cache masing-masing.
Tergantung pada preferensi pelanggan
Penyimpanan persisten Persisten dalam tingkatan v2.

Di tingkat klasik (Pengembang, Dasar, Standar, dan Premium), konten cache tidak berlanjut saat pembaruan layanan berlangsung.
✔️
Batas per tingkat Ukuran cache bervariasi menurut tingkat layanan Tidak terbatas
Akses bersama oleh beberapa instans API Management ✔️
Dukungan penembolokan semantik ✔️
Dukungan pramuat dan pembersihan data ✔️

Skenario Cache

Gunakan penyimpanan sementara di Azure API Management untuk skenario seperti yang ada dalam tabel berikut.

Scenario Description Jenis cache Perilaku dengan hilangnya ketersediaan atau konektivitas cache
Mengoptimalkan pengalaman klien Mempercepat pemrosesan permintaan berulang untuk klien. Internal atau eksternal Backend melayani permintaan dan harus menangani beban penuh jika cache tidak tersedia.
Mengendalikan biaya dan penskalaan backend Kurangi beban dan biaya backend saat backend tidak diskalakan untuk lalu lintas penuh. External Tergantung pada cache dan konfigurasi layanan. Rekomendasi: Pilih tingkat layanan cache dengan keandalan tertinggi dan pantau performa.
Penyimpanan metadata Gunakan cache-store-value untuk menyimpan data arbitrer di cache. Internal atau eksternal Tergantung pada cache dan konfigurasi layanan.

Considerations:

  • Dalam skenario cache apa pun, pertimbangkan kemungkinan kehilangan ketersediaan cache atau konektivitas. API Management menggunakan pendekatan "upaya terbaik" untuk ketersediaan cache. Jika cache yang dikonfigurasi tidak tersedia, cache meleset dan secara default permintaan berlanjut ke layanan backend.

  • Di tingkat klasik API Management, cache internal bersifat sementara dan tidak bertahan selama pembaruan pada layanan. Selama pembaruan layanan, cache internal dibersihkan dalam proses bertahap yang melibatkan hingga 50% cache pada satu waktu.

    Nota

    Anda dapat mengonfigurasi pengaturan pembaruan layanan, termasuk jendela pemeliharaan untuk pembaruan, untuk meminimalkan potensi dampak pelanggan seperti hilangnya cache internal.

  • Jika Anda mengonfigurasi cache eksternal, cache tersebut dapat persisten, tetapi Anda bertanggung jawab untuk memastikan ketersediaan dan konektivitas.

  • Untuk melindungi layanan backend dari lonjakan lalu lintas yang mungkin membebaninya saat cache tidak tersedia, konfigurasikan kebijakan pembatasan tarif (batas tarif atau batas kecepatan-demi-kunci) segera setelah kebijakan pencarian cache apa pun.

Kebijakan Cache

Konfigurasikan kebijakan caching untuk mengontrol bagaimana respons API dicache dan diambil di Azure API Management.

  • Secara bawaan dalam pengaturan cache, API Management menggunakan cache eksternal jika dikonfigurasi, dan kembali ke cache bawaan jika tidak.

  • API Management menyediakan kebijakan cache berpasangan, seperti yang ditunjukkan dalam tabel berikut. Dalam definisi kebijakan, konfigurasikan kebijakan pencarian cache di inbound bagian untuk memeriksa respons cache, dan kebijakan penyimpanan cache di outbound bagian untuk menyimpan respons yang berhasil di cache.

Policies Description Usage
pengambilan cache / penyimpanan cache - Mengambil respons dari cache
- Menyimpan respons dalam permintaan cache
- Gunakan untuk mengambil respons API lengkap dari cache untuk permintaan yang identik GET
nilai-pencarian-cache / nilai-penyimpanan-cache - Mengambil nilai tertentu dari cache
- Menyimpan nilai tertentu dalam cache
- Gunakan untuk skenario caching kustom dengan kunci cache tertentu
azure-openai-semantic-cache-lookup / azure-openai-semantic-cache-store - Periksa apakah respons semantik serupa ada di cache untuk permintaan API Azure OpenAI
- Menyimpan respons untuk permintaan Api Azure OpenAI
- Gunakan untuk mengambil respons serupa terhadap permintaan API Kompletasi Percakapan Azure OpenAI
llm-semantic-cache-lookup / llm-semantic-cache-store - Periksa apakah respons semantik serupa ada di cache untuk permintaan LLM API
- Menyimpan respons untuk permintaan LLM API
- Gunakan untuk mengambil respons serupa terhadap permintaan LLM Chat Completion API

Petunjuk / Saran

  • Kebijakan untuk menyimpan entri dalam cache menyertakan duration atribut untuk menentukan berapa lama entri yang di-cache bertahan.
  • Gunakan cache-remove-value untuk menghapus nilai tertentu yang diidentifikasi oleh kunci dari cache.

Contoh kebijakan penyimpanan sementara

Berikut ini adalah contoh dasar kebijakan caching dalam manajemen API. Untuk contoh selengkapnya, lihat artikel referensi kebijakan caching.

Penggunaan cache respons

Menyimpan respons API lengkap dalam cache internal untuk melayani permintaan yang identik tanpa melakukan panggilan ke backend. Dalam contoh ini, cache menyimpan respons selama tujuh hari.

<policies>
    <inbound>
        <base />
        <cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none" must-revalidate="true" caching-type="internal" >
            <vary-by-query-parameter>version</vary-by-query-parameter>
        </cache-lookup>
    </inbound>
    <outbound>
        <cache-store duration="604800" />
        <base />
    </outbound>
</policies>

Penembolokan nilai

Cache nilai data tertentu untuk digunakan kembali di beberapa permintaan.

<policies>
    <inbound>
        <cache-lookup-value key="user-preferences" default-value="none" variable-name="preferences" />
        <choose>
            <when condition="@(context.Variables["preferences"].ToString() == "none")">
                <!-- Load preferences from backend -->
                <send-request mode="new" response-variable-name="prefsResponse">
                    <set-url>https://backend.api/user/preferences</set-url>
                </send-request>
                <cache-store-value key="user-preferences" value="@(((IResponse)context.Variables["prefsResponse"]).Body.As<string>())" duration="1800" />
            </when>
        </choose>
    </inbound>
</policies>

Perlindungan pembatasan tarif

Sebagai praktik terbaik, gabungkan pencarian cache dengan pembatasan laju untuk melindungi layanan backend.

<policies>
    <inbound>
        <cache-lookup-value key="@("data-" + context.Request.IpAddress)" variable-name="cachedData" />
        <choose>
            <when condition="@(!context.Variables.ContainsKey("cachedData"))">
                <rate-limit calls="10" renewal-period="60" />
                <!-- Proceed to backend -->
            </when>
            <otherwise>
                <!-- Return cached data without rate limiting -->
                <return-response>
                    <set-body>@((string)context.Variables["cachedData"])</set-body>
                </return-response>
            </otherwise>
        </choose>
    </inbound>
</policies>

Pertimbangan keamanan

  • Data sensitif: Hindari respons cache yang berisi informasi sensitif atau pribadi
  • Kunci cache: Pastikan kunci cache tidak mengekspos informasi sensitif dalam log atau diagnostik
  • Kontrol akses: Cache eksternal memerlukan keamanan jaringan dan kontrol akses yang tepat
  • Enkripsi: Gunakan TLS/SSL untuk koneksi ke instans cache eksternal