Bagikan melalui


Cache-Control dalam penembolokan kueri REST

Untuk titik akhir REST, Anda dapat memengaruhi cara Penyusun API Data (DAB) menggunakan cache hasil kueri internalnya dengan Cache-Control header permintaan.

Penting

Jika penembolokan dinonaktifkan dalam konfigurasi runtime, arahan ini diabaikan dan kueri berjalan normal.

Nilai Cache-Control yang didukung

Nilai Perilaku
no-cache Memaksa DAB untuk melewati cache L1 dan L2, mengambil data baru dari database, dan memperbarui cache dengan hasil baru.
no-store Memberi tahu DAB untuk tidak menyimpan respons sama sekali (tidak menyimpan di L1 atau L2, dan tidak mencoba mengambil dari cache).

Perilaku

  • Pencocokan arahan tidak peka huruf besar/kecil.
  • DAB tidak menafsirkan arahan standar Cache-Control lainnya seperti max-age atau max-stale.
  • Hanya berlaku untuk operasi kueri REST. Tidak digunakan untuk arahan cache tingkat permintaan GraphQL.
  • Nilai header HTTP permintaan Cache-Control mengontrol cache L1 dan L2.

Nota

DAB tidak mengatur header respons kontrol cache untuk operasi cache apa pun.

Direktif: no-cache

Memaksa bacaan baru dan memperbarui lapisan cache.

Permohonan

GET /api/Books
Cache-Control: no-cache
Accept: application/json

Respons (contoh)

HTTP/1.1 200 OK
Content-Type: application/json

[
  { "id": 1, "title": "The Hobbit" },
  { "id": 2, "title": "The Silmarillion" }
]

Efek: Cache sekarang menyimpan hasil baru ini (tunduk pada TTL yang dikonfigurasi).

Arahan: tanpa penyimpanan

Menggunakan nilai cache yang ada jika ada; jika tidak, kueri database tetapi tidak mengisi (atau me-refresh) cache dengan hasil baru.

Permohonan

GET /api/Books
Cache-Control: no-store
Accept: application/json

Respons (contoh)

HTTP/1.1 200 OK
Content-Type: application/json

[
  { "id": 1, "title": "The Hobbit" },
  { "id": 2, "title": "The Silmarillion" }
]

Efek: Jika hasil ini belum di-cache, hasil tersebut tidak akan disimpan. Permintaan selanjutnya only-if-cached dapat gagal jika tidak ada permintaan sebelumnya yang mengisi cache.

Tinjauan

  • Gunakan no-cache saat Anda perlu memaksa refresh dari database dan juga memperbarui cache.
  • Gunakan no-store saat Anda menginginkan data tetapi tidak ingin respons ini mengubah cache (meskipun mungkin membaca nilai cache yang ada).
  • Hilangkan header untuk perilaku penembolokan normal.