Latihan 1: HTTP Caching: Cache-Control, ETag, Validation — Web Fundamentals
Latihan 1 dari materi HTTP Caching: Cache-Control, ETag, Validation di Web Fundamentals — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Bikin fungsi handleETag(request, resource) yang berperan sebagai server saat browser melakukan revalidasi.
Isi If-None-Match bisa satu ETag (v3) atau beberapa dipisah koma (v1, v2, "v3"). Buang spasi di pinggir tiap ETag dan buang tanda kutipnya, jadi "v3" dan v3 dianggap sama.
Kalau salah satunya sama dengan resource.etag, return { status: 304, body: null, etag: resource.etag }.
Selain itu, termasuk kalau header-nya gak ada, return { status: 200, body: resource.body, etag: resource.etag }.
Baris console.log di starter jangan diubah. Kalau fungsinya benar, console mencetak berurutan: 304, null, 304, 200, hello world, 200.
Yang juga dicek, dengan resource lain { etag: 'v9', body: 'z' }: header a, "v9" menghasilkan status 304, dan request tanpa header ({ headers: {} }) menghasilkan body z.
Hint
Browser menitip ETag salinannya di If-None-Match. Kalau salah satu ETag itu sama dengan versi di server, isinya belum berubah: balas 304 tanpa body. Kalau gak ada yang cocok, atau header-nya gak ada, kirim isi lengkap dengan 200.
Ubah raw jadi array: split(",") memotong di koma, trim() membuang spasi, replace(/"/g, "") membuang tanda kutip. Lalu cek dengan includes(resource.etag). Kalau raw undefined, pakai array kosong.