Caching dan HTTP: Cara Web Menghindari Pekerjaan yang Sama Dua Kali

Panduan caching HTTP untuk pemula: kenapa bikin web lebih cepat, cara kerja Cache-Control, ETag, dan Expires, plus beda cache browser dengan cache CDN.

Diterbitkan 15 September 20269 menit bacaOleh ACY Partner Indonesia
Sampul Caching dan HTTP dengan contoh header Cache-Control
300 × 250Slot Iklan TersediaPasang iklan Anda di sini

Bayangkan kamu memesan kopi yang persis sama di kafe yang sama setiap pagi. Sekarang bayangkan setiap hari baristanya tetap ngotot menanyakan nama, pesanan, dan alamat kamu dari nol, padahal tidak ada yang berubah. Lama dan agak konyol, kan. Web punya masalah serupa: sebuah browser sering kali butuh logo yang sama, file gaya yang sama, dan skrip yang sama berulang-ulang. Caching adalah cara web berkata, “Ini sudah saya punya, tidak perlu minta lagi.”

Di artikel ini kita akan menelusuri apa itu caching HTTP, kenapa itu penting, dan sekumpulan kecil header yang mengaturnya. Kamu tidak perlu pengalaman sebelumnya. Di akhir tulisan, kamu akan bisa membaca sebuah respons dan paham apakah ia akan disimpan, untuk berapa lama, dan siapa yang boleh menyimpan salinannya.

Apa sebenarnya arti caching

Cache itu sebenarnya hanya salinan tersimpan dari sesuatu, yang ditaruh di tempat yang lebih dekat atau lebih cepat supaya kamu tidak perlu mengambil aslinya lagi. Di dunia web, ketika browser mengunduh sebuah file (gambar, file CSS, sepotong JSON), ia bisa menyimpan file itu secara lokal. Saat halaman berikutnya meminta file yang sama, browser bisa menyajikannya dari penyimpanannya sendiri tanpa harus jalan-jalan lagi ke seberang internet.

Perjalanan itulah bagian yang mahal. Setiap permintaan harus berangkat dari perangkatmu, mungkin menyeberangi dunia, sampai ke server, lalu responsnya harus menempuh jalan pulang yang sama. Bahkan di koneksi cepat pun itu makan waktu. Kalikan dengan puluhan file yang dibutuhkan satu halaman biasa, dan jelas kenapa melewatkan perjalanan berulang membuat halaman terasa seketika.

Ada dua keuntungan besar dari caching:

  • Cepat untuk pengguna. File yang disajikan dari cache lokal muncul nyaris seketika, karena tidak ada yang perlu diunduh.
  • Beban server berkurang. Setiap permintaan yang dijawab oleh cache adalah permintaan yang tak perlu ditangani server asal. Itu menghemat bandwidth dan menjaga server tetap longgar untuk pekerjaan yang memang harus ia kerjakan.

Cache vs. database

Cache dan database sama-sama menyimpan data, tapi tugasnya berbeda. Database adalah sumber kebenaran, tempat data asli yang permanen disimpan. Cache adalah salinan sementara yang sifatnya sekali pakai, ditaruh semata-mata untuk mempercepat. Kalau cache dihapus, tidak ada yang hilang; datanya selalu bisa diambil lagi dari sumbernya.

Siapa yang menyimpan salinannya

Saat kita bilang “cache”, biasanya yang dimaksud salah satu dari beberapa tempat di sepanjang jalur antara pengguna dan server. Lebih mudah membayangkannya sebagai sebuah rantai:

[ Browser ] → [ Proxy / CDN ] → [ Server asal ]
   privat        bersama          sumber kebenaran
  • Cache browser ada di komputer atau ponselmu sendiri. Sifatnya privat, hanya kamu yang memakainya. Inilah yang membuat halaman yang pernah kamu kunjungi terbuka lebih cepat saat dibuka untuk kedua kalinya.
  • Cache bersama duduk di antara banyak pengguna dan server. Sebuah proxy perusahaan atau, yang lebih umum sekarang, sebuah CDN (Content Delivery Network) menyimpan satu salinan lalu menyajikannya ke banyak orang berbeda. Karena dipakai bersama, ia bisa menekan drastis seberapa sering server asal dihubungi.

Respons yang sama bisa disimpan di lebih dari satu tempat ini sekaligus. Header yang akan kita kenalan sebentar lagi adalah cara server memberi tahu masing-masing tempat itu apa yang boleh dilakukan.

Di mana posisi CDN

CDN adalah topik yang dalam tersendiri, soal bagaimana ia menempatkan salinan file kamu di pusat-pusat data di seluruh dunia supaya pengguna mengunduh dari lokasi terdekat. Kita bahas CDN lebih rinci di materi hosting. Untuk artikel ini, cukup ingat bahwa CDN adalah cache bersama berukuran besar yang berada di antara pengguna dan server kamu.

Cache-Control: sakelar utamanya

Header caching paling penting saat ini adalah Cache-Control. Server mengirimnya bersama sebuah respons untuk menjelaskan bagaimana respons itu boleh disimpan. Ia menerima sederet instruksi yang dipisah koma, yang disebut directive. Berikut contoh yang umum:

HTTP/1.1 200 OK
Content-Type: text/css
Cache-Control: public, max-age=86400

Mari kita bedah directive yang sering muncul satu per satu.

Directive Artinya
max-age=N Respons dianggap “segar” selama N detik. Selama itu, cache boleh memakainya ulang tanpa bertanya apa-apa. (86400 = 24 jam.)
public Cache mana pun boleh menyimpannya, termasuk cache bersama seperti CDN.
private Hanya browser pengguna yang boleh menyimpannya. Cache bersama tidak boleh menyimpan salinan.
no-cache Cache boleh menyimpannya, tapi wajib memeriksa ulang ke server sebelum memakainya lagi.
no-store Jangan disimpan sama sekali, di mana pun. Selalu ambil yang baru.

Beberapa nama ini gampang tertukar, jadi dua yang terakhir layak kita pelankan.

no-cache vs. no-store

Namanya terdengar nyaris sama, tapi kelakuannya jauh berbeda.

  • no-store berarti jangan simpan salinan apa pun. Setiap kali file dibutuhkan, ia harus diunduh ulang dari server. Ini dipakai untuk data yang benar-benar sensitif atau selalu berubah, seperti halaman saldo rekening.
  • no-cache lebih longgar. Ia berkata, kamu boleh menyimpan salinan, tapi sebelum memakainya kamu wajib bertanya ke server “salinanku masih sah?” Kalau server bilang salinan itu masih valid, browser memakainya ulang tanpa mengunduh ulang, dan itu cepat. Kalau tidak, ia mengunduh versi yang baru.

no-cache bukan berarti jangan di-cache

Hampir semua orang awalnya terjebak di sini. no-cache tidak melarang caching. Ia mengizinkan caching tapi mewajibkan pemeriksaan ulang sebelum tiap pemakaian. Kalau kamu benar-benar tidak mau ada yang tersimpan, directive yang kamu cari adalah no-store.

public vs. private

public dan private menentukan siapa yang boleh menyimpan salinan, bukan berapa lama. File gaya yang isinya identik untuk semua orang boleh public, sehingga sebuah CDN bisa menyajikan satu salinan ke ribuan pengguna. Halaman yang menampilkan detail akun pribadi John Doe sebaiknya private, supaya hanya browser John sendiri yang menyimpannya dan tidak ada cache bersama yang tak sengaja menyerahkannya ke Jane Doe.

Expires: pendekatan yang lebih lama

Sebelum Cache-Control ada, cara untuk mengatur masa kedaluwarsa adalah header Expires. Ia menyebut tanggal dan waktu pasti, dan setelah itu respons dianggap basi:

Expires: Wed, 21 Oct 2026 07:28:00 GMT

Cara ini berfungsi, tapi punya kelemahan: ia bergantung pada jam. Kalau jam di komputer pengguna salah, perhitungannya ikut salah. Cache-Control: max-age menghindari masalah ini dengan menghitung detik sejak respons tiba, sehingga tak peduli jam siapa yang dianggap benar. Kalau kedua header ada, Cache-Control yang menang. Kamu masih akan menjumpai Expires di lapangan, tapi untuk pekerjaan baru sebaiknya pilih max-age.

ETag dan revalidasi: pengecekan “masih oke nggak?”

Sejauh ini kita menangani kesegaran dengan timer. Tapi ada trik yang lebih pintar untuk saat sebuah salinan mungkin sudah usang: alih-alih asal mengunduh ulang, browser bisa bertanya, “ini benar-benar berubah, nggak?” Kalau tidak, server bisa menjawab dengan balasan mungil dan melewatkan pengiriman seluruh file lagi. Ini disebut revalidasi, dan bintangnya adalah ETag.

ETag (entity tag) adalah pengenal pendek yang ditempelkan server pada sebuah file, anggap saja seperti sidik jari atau cap versi. Kalau file berubah sedikit saja, ETag-nya ikut berubah. Begini tampilan permintaan pertama:

HTTP/1.1 200 OK
ETag: "a1b2c3d4"
Cache-Control: no-cache
Content-Type: image/png

(... seluruh byte gambar ...)

Browser menyimpan gambar itu beserta ETag-nya. Nanti, ketika butuh gambar yang sama lagi, ia meminta server memastikan salinannya masih terkini dengan mengirim ETag itu kembali lewat header If-None-Match:

GET /logo.png HTTP/1.1
Host: blog.acy-partner.com
If-None-Match: "a1b2c3d4"

Sekarang salah satu dari dua hal terjadi:

Kalau file TIDAK BERUBAH:
  Server membalas → 304 Not Modified   (tanpa body, cuma "pakai salinanmu")

Kalau file BERUBAH:
  Server membalas → 200 OK + file baru + ETag baru

Balasan 304 Not Modified itulah keajaibannya. Ukurannya kecil, tanpa body file sama sekali, jadi ia kembali nyaris seketika, lalu browser memakai ulang salinan yang sudah ia punya. Kamu dapat keamanan dari selalu memeriksa ke server, tanpa membayar ongkos unduh ulang saat tidak ada yang berubah.

Status Artinya dalam caching
200 OK Ini file lengkap dan segarnya.
304 Not Modified Salinan cache-mu masih bagus, pakai ulang saja, saya tidak mengirim apa-apa.

Kombinasi yang umum dan ampuh

Susunan yang banyak dipakai adalah Cache-Control: no-cache bersama sebuah ETag. Browser menyimpan salinan tapi memeriksa setiap kali, dan sebagian besar pemeriksaan itu kembali sebagai 304 yang kecil. Kamu dapat konten yang cukup segar dengan data yang sangat sedikit berpindah.

Ada kerabat yang lebih lama dari pola ini, yang berbasis tanggal alih-alih sidik jari: server mengirim tanggal Last-Modified, lalu browser bertanya “ada yang lebih baru?” lewat header If-Modified-Since. Cara kerjanya sama dan juga menghasilkan 304 saat tidak ada yang berubah. ETag biasanya lebih disukai karena mendeteksi perubahan apa pun, bukan hanya perubahan yang bisa dilihat oleh jam.

Menggabungkan semuanya: strategi di dunia nyata

Untuk situs web pada umumnya kamu akan sering melihat dua gaya caching berbeda, yang dipilih berdasarkan jenis file:

  • File yang sering berubah (seperti halaman HTML, atau respons API) memakai no-cache dengan ETag. Mereka selalu diperiksa ulang, tapi pemeriksaannya murah.
  • File yang jarang berubah (seperti logo, font, atau skrip berversi bernama app.4f8a.js) memakai max-age yang panjang dengan public. Browser dan CDN menyimpannya lama dan tidak merepotkan server sama sekali.

Trik untuk kelompok kedua adalah: ketika kamu memang perlu mengubah file semacam itu, kamu mengganti namanya (misalnya dengan menaruh hash baru di nama file). Nama baru berarti URL baru, jadi cache memperlakukannya sebagai file yang sama sekali baru dan mengambil yang segar, tanpa salinan basi yang nyangkut. Pola ini disebut cache busting, dan ia membuatmu bisa nge-cache secara agresif tanpa pernah menyajikan konten kedaluwarsa.

Rangkuman singkat

Caching adalah cara web untuk tidak mengulang pekerjaan, dan hasilnya terasa di dua arah sekaligus: halaman lebih cepat untuk orang, dan beban lebih ringan untuk server. Berikut gagasan yang layak diingat:

  • Cache adalah salinan tersimpan yang sementara, ditaruh di tempat yang lebih cepat dari aslinya.
  • Salinan bisa berada di browser kamu (privat) atau di cache bersama seperti CDN.
  • Cache-Control adalah header utamanya. Ingat max-age (berapa lama segar), public/private (siapa yang boleh menyimpan), no-cache (simpan tapi revalidasi), dan no-store (jangan simpan apa pun).
  • Expires adalah cara lama berbasis jam untuk mengatur kesegaran; lebih baik pilih max-age.
  • ETag + If-None-Match memungkinkan browser bertanya “ini berubah nggak?” dan mendapat 304 Not Modified yang mungil saat tidak berubah, sehingga hemat satu unduhan penuh.

Begitu hal-hal ini terasa pas, langkah berikutnya yang baik adalah melihat bagaimana sebuah CDN menyebar salinan cache ke seluruh dunia, dan bagaimana header respons secara umum membentuk perilaku browser. Caching berada tepat di persimpangan antara kecepatan dan ketepatan, dan memahaminya adalah salah satu cara tercepat untuk membuat sebuah situs terasa jauh lebih ringan.

Tag:httpcachingcache-controletagweb-fundamentalsperforma
728 × 90Slot Iklan TersediaPasang iklan Anda di sini

Artikel Terkait

Lihat Semua Artikel

Artikel yang Mungkin Kamu Suka

Ilustrasi DOM sebagai pohon dari node HTML
Dasar-Dasar Web / Browser

Apa Itu DOM?

Penjelasan DOM untuk pemula: pohon HTML yang hidup di memori browser. Pahami apa itu DOM, bagaimana pohonnya dibentuk, dan kenapa ia begitu penting.

15 Sep 20267 menit baca
Ilustrasi berjudul Apa Itu Web Browser dengan code chip fetch ke render
Dasar-Dasar Web / Browser

Apa Itu Web Browser?

Penjelasan sederhana soal web browser: program yang mengambil berkas dari web lalu menyusunnya menjadi halaman yang kamu lihat, satu tab dan satu klik setiap saat.

15 Sep 20268 menit baca
Ilustrasi engine browser menjalankan skrip lewat event loop
Dasar-Dasar Web / Browser

Cara Browser Menangani JavaScript

Penjelasan ramah pemula soal bagaimana browser membaca, mengubah, dan menjalankan JavaScript, kenapa hanya punya satu jalur utama, dan bagaimana cara memuat skrip memengaruhi tampilan halaman.

15 Sep 20268 menit baca
Sampul biru gelap bertuliskan Cara Kerja Browser dengan chip kode parse ke layout ke paint
Dasar-Dasar Web / Browser

Cara Kerja Browser: Gambaran Umum

Penjelasan ramah pemula tentang apa yang dilakukan browser dari kamu mengetik URL sampai halaman muncul: jaringan, parsing, render tree, layout, paint, compositing, dan mesin JavaScript.

15 Sep 20268 menit baca
Sampul Critical Rendering Path dengan chip timer first paint
Dasar-Dasar Web / Browser

Critical Rendering Path

Ikuti langkah persis yang dilakukan browser untuk mengubah HTML, CSS, dan JavaScript menjadi piksel pertama yang terlihat, dan pahami kenapa posisi CSS dan JS menentukan secepat apa halaman muncul.

15 Sep 20267 menit baca
Sampul Dasar Keamanan Browser dengan chip kode berlambang perisai same-origin
Dasar-Dasar Web / Browser

Dasar Keamanan Browser: Cara Browser Diam-Diam Melindungimu

Panduan ramah untuk pemula tentang cara browser menjaga keamananmu: same-origin policy, sandboxing antar-tab, gembok HTTPS, mixed content, dan pengantar lembut soal kenapa input bisa berbahaya.

15 Sep 202610 menit baca