Materi
Cache menyimpan respons supaya permintaan berikutnya bisa dijawab tanpa menghubungi server. Menurut RFC 9111, respons segar selama umurnya belum melewati masa segarnya, dan basi setelah itu. Cache-Control: max-age=600 menyatakan respons dianggap basi setelah umurnya lebih dari 600 detik. Umur dihitung sejak respons dibuat atau terakhir divalidasi server, dan header Age menyebut berapa detik respons itu sudah tersimpan di cache perantara. Direktif Cache-Control dipisah koma dan namanya tidak membedakan huruf.
Dua direktif yang namanya mirip artinya jauh berbeda. no-store melarang cache menyimpan respons sama sekali, dan dipakai untuk data sensitif. no-cache membolehkan penyimpanan, tetapi respons tidak boleh dipakai sebelum divalidasi ulang ke server. Jadi no-cache bukan berarti jangan simpan.
// Respons pertama
// 200 OK
// Cache-Control: no-cache
// ETag: "menu-v12"
// Permintaan berikutnya memvalidasi salinan:
const headers = { "if-none-match": '"menu-v12"' };
// 304 Not Modified -> pakai salinan lama
// 200 OK + ETag: "menu-v13" -> ganti salinanValidasi ulang memakai ETag, penanda versi representasi. Klien yang menyimpan respons ber-ETag "menu-v12" mengirim If-None-Match dengan nilai itu. Bila versi di server masih sama, server menjawab 304 Not Modified tanpa badan dan klien memakai salinannya; bila berubah, server menjawab 200 dengan isi baru dan ETag baru.