全部产品
Search
文档中心

Edge Security Acceleration:Cache API

更新时间:Jun 21, 2025

Cache API adalah metode yang digunakan untuk menyimpan data dalam cache. Anda dapat memanggil Cache API untuk menyimpan data di titik kehadiran (POPs) sehingga data dapat disajikan dengan cepat untuk permintaan berikutnya. Dalam operasi API Cache, Anda dapat mengonfigurasi waktu hidup (TTL) dan ukuran cache sesuai dengan kebutuhan bisnis Anda.

Cara kerjanya

Anda dapat menggunakan Cache API bawaan dari Edge Routine untuk menyimpan hasil yang diproses oleh Edge Routine atau data yang diambil dari server asal pada Edge Security Acceleration (ESA) POPs. Dengan cara ini, permintaan lain yang mengakses POPs yang sama dapat menggunakan kembali hasil yang tersimpan, sehingga jumlah perhitungan atau permintaan berulang dikurangi. Gambar berikut menunjukkan hubungan antara Edge Routine dan cache ESA.工作原理

Spesifikasi API

Cache API pada dasarnya mengikuti spesifikasi yang dijelaskan di Cache, sementara Edge Routine menggunakan kembali mesin cache yang ada dari ESA. Akibatnya, semantik akhir untuk Cache API dan Cache mungkin berbeda.

Definisi API

cache.put(request/string, response)

  • Menambahkan objek Response ke Cache.

    • Jika metode PUT berhasil, Promise yang dikembalikan diselesaikan menjadi undefined.

    • Jika mesin Cache gagal, objek Promise ditolak dan kesalahan dipicu.

    • Jika kuota mesin Cache habis, objek Promise ditolak dan kesalahan dipicu.

  • Atur kunci cache ke URL objek Request atau gunakan string untuk menentukan URL. Hanya URL HTTP yang didukung karena batasan mesin Cache dari ESA.

  • Ini adalah fungsi asinkron. Anda dapat memanggil await untuk menunggu hingga objek Response ditambahkan ke Cache.

  • Anda dapat mengonfigurasi header Cache-Control untuk objek Response untuk menentukan TTL untuk cache. Konfigurasi header Cache-Control harus memenuhi spesifikasi Cache.

Examples

  • Tambahkan konten ke Cache

    async function doPut() {
      await cache.put("http://www.example.com", new Response("Hello World"));
      new Response("Hello World", {headers: [["cache-control", "max-age=10"]]})); 
    }
  • Tambahkan konten ke Cache dan konfigurasikan TTL

    async function doPut() {
      await cache.put("http://www.example.com", new Response("Hello World"));
      await cache.put("http://www.example.com", 
      new Response("Hello World", {headers: [["cache-control", "max-age=10"]]})); 
    }

cache.get(request/string)

  • Mendapatkan objek Response yang kuncinya adalah permintaan input atau string input. Jika objek tidak ada, Promise yang dikembalikan diselesaikan menjadi undefined.

  • Ini adalah fungsi asinkron. Anda dapat memanggil await untuk menunggu hingga objek Response diperoleh.

  • Metode GET mungkin gagal mengembalikan objek yang ditambahkan dalam metode PUT sebelumnya. Objek Cache mungkin tidak dapat diambil karena algoritma caching Least Recently Used (LRU).

Examples

  • Mendapatkan objek Response

    async function doGet() {
        let resp = await cache.get("http://www.example.com");
    }
  • Mengurai hasil yang tersimpan menjadi JSON

    async function doGet() {
        let resp = await cache.get("http://www.example.com");
        let j = await resp.json();
    }

cache.delete(request/string)

  • Menghapus objek Response yang kuncinya adalah permintaan input.

    • Jika objek Response dihapus, Promise yang dikembalikan diselesaikan menjadi true.

    • Jika objek Response gagal dihapus, Promise yang dikembalikan diselesaikan menjadi false.

  • Ini adalah fungsi asinkron. Anda dapat memanggil await untuk menunggu hingga objek Response dihapus.

Example: Delete the resources of a key

async function doDelete() {
  let resp = await cache.delete("http://www.example.com");
  
  if (resp) {
        console.alert("selesai");
  } else {
        console.alert("gagal");
  }
}

Batasan

  • Semua permintaan sebelumnya merupakan subpermintaan yang berbagi kuota subpermintaan Edge Routine. Secara default, permintaan Edge Routine dapat memiliki maksimal 32 subpermintaan fetch. Kuota ini mungkin berubah setelah Edge Routine digunakan secara komersial. Panggilan cache dianggap sebagai subpermintaan yang berbagi kuota subpermintaan fetch. Total jumlah subpermintaan cache.put, cache.get, cache.delete, dan fetch tidak boleh melebihi 32 dalam konteks Permintaan.

  • cache.put, cache.get, dan cache.delete berada di bawah kontrol konkurensi. Jika satu permintaan melakukan operasi GET dan permintaan lain melakukan operasi DELETE untuk URL yang sama, status tertunda mungkin dikembalikan untuk operasi GET atau DELETE. Permintaan gagal karena mencoba memodifikasi sumber daya dengan kunci yang sama pada saat bersamaan. Dalam hal ini, Anda dapat mencoba lagi nanti.

    null

    Jika permintaan cache.put, cache.get, dan cache.delete ditolak dan Promise yang dikembalikan diselesaikan menjadi true, operasi tersebut berada di bawah kontrol konkurensi.

Purge cache

Konten yang disimpan dalam cache dengan memanggil Cache API tidak dapat secara otomatis di-purge. Anda harus menentukan parameter TTL saat menggunakan Cache.put().