Caching
CachingCache Control

Cache Control

Included in the “Power Extensions” bundle

Saat menjalankan query terhadap server GraphQL melalui metode GET, respons GraphQL dapat di-cache di sisi klien atau pada tahap perantara antara klien dan server (seperti CDN), dengan mengandalkan caching HTTP standar.

Ini bekerja secara alami untuk persisted queries, dan untuk single endpoint serta custom endpoint bekerja dengan menambahkan parameter ?query={ GraphQL query } ke endpoint.

Deskripsi

Caching HTTP bekerja dengan mengirimkan header Cache-Control beserta nilai max-age dalam respons, yang menunjukkan berapa lama respons harus di-cache.

Ekstensi Cache Control menawarkan Cache Control Lists, di mana nilai max-age kustom didefinisikan untuk field dan directive. Oleh karena itu, query yang berbeda yang mengandung kombinasi field dan directive yang berbeda akan menghasilkan nilai max-age yang berbeda pula.

Nilai max-age respons dihitung secara otomatis oleh mesin GraphQL. Nilainya adalah max-age terendah dari semua field dan directive dalam query yang diminta (sebagaimana didefinisikan dalam Cache Control List), atau no-store jika salah satu kondisi berikut terpenuhi:

  • ada mutasi yang dijalankan
  • ada field atau directive yang memiliki max-age dengan nilai 0
  • aturan Access Control harus memeriksa status pengguna untuk field atau directive tertentu (dalam hal ini, respons bersifat spesifik untuk pengguna sehingga tidak dapat di-cache)

Mendefinisikan kebijakan cache control

Cache Control Lists

Sebuah Custom Post Type "Cache Control List" baru ditambahkan ke situs. Kita dapat menelusuri entri-entrinya di halaman "Cache Control Lists" pada menu, dan mengklik "Add New Cache Control List" untuk menambahkan entri baru di editor.

Cache Control Lists
Cache Control Lists

Editor Cache Control List

Setiap Cache Control List berisi satu atau beberapa entri, masing-masing dengan elemen-elemen berikut:

  • Field dan directive yang, jika muncul dalam GraphQL query, akan mengaktifkan max-age yang dipilih
  • max-age

Entri Cache Control

Setelah membuat Cache Control List, kita dapat membuat endpoint menggunakannya dengan mengedit Schema Configuration yang sesuai, dan memilih item dari daftar di bawah blok "Cache Control Lists".

Memilih Cache Control List di Schema Configuration