𝗖𝗮𝗰𝗵𝗶𝗻𝗴 𝗦𝗵𝗼𝗽𝗶𝗳𝘆 𝗚𝗥𝗔𝗣𝗛𝗤𝗟: 𝗣𝗮𝗱𝘂𝗮𝗻 𝗣𝗿𝗮𝗸𝘁𝗶𝘀

GraphQL tidak bekerja seperti REST. Anda tidak bisa melakukan caching berdasarkan URL. Dalam REST, satu endpoint sama dengan satu entri cache. Dalam GraphQL, satu endpoint menangani segalanya. Dua permintaan ke URL yang sama dapat mengembalikan data yang berbeda.

Untuk melakukan caching GraphQL dengan benar, kunci cache (cache key) Anda harus menyertakan:

  • Query
  • Variabel
  • Konteks pengguna (lokal atau segmen pembeli)

Gunakan lapisan (layers) untuk membangun sistem yang cepat:

  • Client cache: Untuk penggunaan kembali sesi di browser.
  • Edge cache: Untuk halaman storefront publik.
  • App cache: Untuk data bersama di server Anda.
  • Persisted queries: Untuk kunci berbasis hash yang stabil.

Sesuaikan waktu cache Anda dengan seberapa cepat data berubah.

Cache item berikut untuk waktu yang lama:

  • Detail produk
  • Koleksi
  • Pengaturan toko

Cache item berikut untuk waktu yang singkat:

  • Harga
  • Ketersediaan inventaris

Jangan pernah melakukan cache pada item berikut:

  • Keranjang belanja
  • Proses checkout
  • Harga khusus pelanggan

Jika Anda melayani toko B2B, Anda harus menyertakan ID perusahaan dalam kunci cache Anda. Jika gagal, Pelanggan A mungkin melihat harga kontrak Pelanggan B.

Gunakan tiga metode ini untuk mengelola kesegaran data (freshness):

  1. TTL (Berbasis waktu): Tetapkan waktu kedaluwarsa. Ini sederhana tetapi Anda sering kali hanya menebak-nebak.
  2. Webhooks (Berbasis peristiwa): Ini adalah yang paling akurat. Saat produk diperbarui, Shopify mengirimkan webhook. Gunakan webhook tersebut untuk menghapus entri cache lama Anda.
  3. Stale-while-revalidate: Sajikan data lama secara instan sementara Anda memperbarui cache di latar belakang.

Bangun handler webhook yang andal. Jika webhook gagal, cache Anda akan tetap usang (stale). Gunakan mekanisme percobaan ulang (retries) untuk mencegah hal ini.

Fokuslah pada metrik berikut untuk melihat apakah strategi Anda berhasil:

  • Hit ratio: Targetkan jumlah hit yang tinggi.
  • Latensi: Waktu respons Anda harus menurun.
  • API calls yang terhindari: Semakin banyak hit, semakin rendah biaya.
  • Insiden data usang (stale): Target Anda adalah nol kesalahan harga atau laporan stok.

Gunakan lapisan pada cache Anda. Sesuaikan waktu kedaluwarsa dengan volatilitas data. Gunakan webhook untuk menghapus data lama. Bangun kunci yang menghormati personalisasi.

Sumber: https://dev.to/masadashraf/caching-shopify-graphql-a-practical-guide-for-developers-33k8