Protokol HTTP (web) memiliki mekanisme cache/caching. Tujuan caching adalah untuk pengiritan bandwidth jaringan, sehingga selain mengirit biayaa juga dapat mempercepat akses. Namun ada kalanya kita tidak menginginkan terjadinya caching. Artikel berikut menjelaskan jenis-jenis caching yang ada dan bagaimana cara “mengalahkan”-nya, jika diperlukan.
header If-Modified-Since oleh browser
Setelah browser merequest sebuah halaman atau gambar atau objek lain, dia akan menyimpan tanggal Last-Modified yang diberikan oleh server, jika ada.
Jika pengguna browser meminta lagi halaman/gambar/objek yang sama beberapa saat kemudian, browser akan mengirimkan request ke server dengan header If-Modified-Since + tanggal yang disimpan tersebut. Tujuannya adalah meminta versi baru pada server ‘hanya jika halaman/gambar/objek ybs telah berubah sejak tanggal terakhir direquest’.
Jika Anda menekan refresh/reload di browser (mis: tombol F5 di IE atau tombol Reload di Firefox) browser pun masih akan menggunakan mekanisme If-Modified-Since ini jika versi lama masih tersimpan di cache.
Jika Anda menekan Shift-Reload atau Ctrl-F5, barulah browser benar-benar meminta versi baru dengan mekanisme Cache-Control.
Pada umumnya, aplikasi web tidak akan terpengaruh oleh mekanisme ini, karena respon yang dikirimkan dari aplikasi web tidak akan mengandung header Last-Modified. Yang terpengaruh hanyalah file-file statik (file HTML statik, gambar, dll) yang memiliki tanggal/waktu Last-Modified yaitu dari filesystem.
setting Check newer documents di browser
Jika setting “Check newer documents” browser dimatikan, maka browser bisa saja sama sekali tidak menggunakan mekanisme If-Modified-Since. Dia akan sepenuhnya bergantung dari cache dan tidak mengecek keberadaan versi baru di server.
Untuk mengalahkan caching seperti ini, Anda dapat menggunakan header Cache-Control atau Expires (lihat di bawah).
Mekanisme-mekanisme caching proxy
Antara browser/komputer Anda dengan server situs tujuan yang ingin diakses, seringkali terdapat satu atau lebih server proxy + cache. Kadang server proxy ini sifatnya transparan, artinya Anda tidak harus mengeset setting proxy di browser Anda, tapi Anda akan tetap menggunakan proxy.
XXX
Mengalahkan caching =
header Cache-Control
header Pragma
header Expires
menggunakan random extra string pada URL
Satu hal terakhir yang perlu diingat, cache sebetulnya adalah teman kita, caching tidaklah selalu buruk, dan tidak selalu harus “dikalahkan”. Lakukan cache-defeating mechanisms hanya jika memang diperlukan.
Referensi
- RFC 2616, HTTP/1.1