Sudah Diperbaiki tetapi Layarnya Tidak Berubah — Cara Kerja Cache

Artikel ini adalah bagian dari kursus Dasar-Dasar Teknologi Informasi, yang membangun dari nol pengetahuan TI praktis yang minimal kamu butuhkan untuk memprogram dan melakukan vibe coding.
Perbaikan yang tidak muncul berarti ada salinan lama yang masih tersimpan di suatu tempat. Cara memilah tiga tempat itu — browser, CDN, dan server publik — serta cara agar perubahan pasti sampai kita periksa lewat diagram.

Artikel ini membahas situasi ketika sudah diperbaiki tetapi layarnya tidak berubah.

Ceritanya tentang saat kamu sudah memperbaiki kode lalu men-deploy-nya, tetapi begitu dibuka tampilannya masih yang lama.

Penyebabnya biasanya bukan kodenya, melainkan salinan lama yang masih tersimpan di suatu tempat.

Saat perbaikan tidak muncul, salinan lamanya ada di salah satu tempat
Sudah diperbaiki,tidak berubahDi browser kamuJalur distribusiDi server publikMuat ulangMinta dihapusTaruh ulangHanya kamuSemua orangSemua orang
Kiri adalah gejalanya. Salinan lama tersimpan di salah satu dari 3 tempat di tengah, dan kanan adalah cara menghapusnya. Paling kanan adalah siapa yang melihat versi lama pada kasus itu.

Dari apakah hanya kamu yang melihat versi lama atau semua orang, kamu bisa membedakan di mana salinannya tersimpan.

Apa itu cache — mengembalikan salinan yang disimpan tanpa mengambilnya lagi

Cache (mekanisme yang menyimpan sesuatu yang sudah pernah diambil di tempat yang dekat, lalu mengembalikannya tanpa mengambil ulang) ada supaya hal yang sama tidak diambil berkali-kali.

Sesuatu yang sudah sekali diambil disimpan secara lokal, dan mulai pengambilan kedua yang dipakai adalah salinan itu.

Sebagai imbalan atas kecepatan, muncul rentang waktu ketika pembaruan tidak disadari.

Lamanya penyimpanan itu adalah masa berlaku (max-age; waktu ketika salinan yang disimpan boleh dipakai tanpa mengambil ulang).

Sampai masa berlakunya habis, salinan lokal terus dipakai meski servernya sudah kamu perbaiki.

Makin jarang sesuatu berubah, seperti gambar dan CSS, makin panjang pengaturannya.

Perbaikan yang sama memberi hasil berbeda di dalam atau di luar masa berlaku
Perbaiki app.cssdi serverBuka dalammasa berlakuPakai salinanlokal apa adanyaIsi perbaikantidak munculBuka setelah masaberlaku habisAmbil ulangdari serverIsi perbaikanmuncul
Kiri adalah saat kamu memperbaikinya di sisi server. Cabang atas dan bawah berbeda pada apakah layarnya dibuka di dalam atau di luar masa berlaku, dan yang muncul pun berbeda.

Ada rentang waktu ketika perbaikan tidak muncul karena masa berlakunya belum habis.

Cache mengembalikan salinan lama

Cache adalah mekanisme yang menyimpan sesuatu yang sudah pernah diambil di tempat yang dekat, lalu mengembalikannya mulai pengambilan berikutnya.

Karena tidak mengambil setiap kali, prosesnya jadi cepat, tetapi pembaruan di sisi server pada sela waktu itu tidak disadari, sehingga muncul keadaan sudah diperbaiki tetapi tidak berubah.

Tiga tempat salinan disimpan — di dalam browser kamu, di tengah distribusi, dan di dalam server

Tempat salinan disimpan bukan cuma satu.

Ada 3 tempat berurutan dari yang paling dekat dengan pengguna, dan ketiganya bersarang.

Yang paling dalam, yaitu salinan yang dipegang browser kamu sendiri, adalah cache browser (browser cache).

Tiga tempat yang bisa menyimpan salinan lama
Tempat-tempat yang dilewati sebelum layar muncul
1. Di dalam browser pengguna (cache browser)
  • Hanya tersimpan di perangkat orang itu
  • Kalau dimuat ulang, bisa diambil kembali
  • Kalau hanya kamu yang melihat versi lama, di sinilah tempatnya
2. Di dalam jalur distribusi (CDN)
  • Salinan yang ditaruh di tempat dekat pengguna
  • Semua orang melihat versi lama yang sama
  • Tetap tersimpan sampai kamu meminta penghapusannya
3. Di dalam server publik
  • Hasil build yang kamu taruh itu sendiri
  • Kalau deploy-nya gagal, isinya masih yang lama
  • Kalau yang ini lama, semua orang melihat versi lama
Makin ke luar, makin jauh tempatnya. Kalau diperiksa berurutan dari sisi dalam yang paling dekat dengan pengguna, kamu bisa tahu di mana prosesnya berhenti.

Yang kedua, CDN (Content Delivery Network; mekanisme yang menaruh salinan di tempat dekat pengguna lalu mendistribusikannya dari sana), sudah tertanam sejak awal di banyak tujuan deploy.

Ketiga tempat ini berbeda cara menghapusnya dan berbeda pula seberapa luas jangkauan efeknya.

Tindakan meminta salinan CDN dihapus disebut purge (menghapus salinan yang dipegang jalur distribusi supaya diambil ulang).

Ada juga pengaturan yang melakukan purge otomatis setiap kali deploy.

Apa itu memuat ulang secara paksa

Pada pemuatan ulang biasa, salinan lokal kadang dipakai apa adanya.

Tindakan yang memaksa pengambilan ulang disebut hard reload (pemuatan ulang paksa), dan kalau kamu hanya ingin memastikan, membuka halamannya di window yang tidak menyimpan riwayat memberi hasil yang sama.

Pilah berdasarkan apakah hanya kamu yang melihat versi lama atau semua orang

Daripada mencoba 3 tempat itu berurutan dari atas, memastikan jangkauannya lebih dulu akan lebih cepat selesai.

Yang kamu lihat adalah apakah orang selain kamu juga melihat versi lama.

Siapa yang melihat versi lama menentukan letak penyebabnya
Orang lain jugalihat yang lama?Lama: kamu sajaLama: semua orangMuat ulangdi sisi kamuPeriksa CDN danhasil build
Kiri adalah hal yang dipastikan. Kalau hanya kamu yang melihat versi lama, letaknya di sisi kamu; kalau semua orang, letaknya lebih ke luar. Kanan adalah tindakan berikutnya.

Kalau hanya kamu, penyebabnya tidak ada di tempat lain selain di dalam browser kamu sendiri.

Kalau orang lain juga melihat versi lama, sebanyak apa pun kamu memuat ulang di sisimu tidak akan mengubahnya.

Yang paling bawah adalah kasus ketika file barunya memang belum sampai ke server publik.

Kalau build-nya gagal, yang dipublikasikan masih hasil build sebelumnya.

Berubah setelah dimuat ulang belum tentu berarti selesai

Kalau kamu memuat ulang di sisimu sendiri, tampilannya jadi baru, tetapi itu hanya menukar salinan pada 1 mesin milikmu.

Di perangkat pengguna, salinan lama tetap ada sampai masa berlakunya habis.

Kalau nama file diubah, salinan lama tidak lagi dipakai

Alih-alih menghapusi satu per satu, ada cara supaya salinan lama tidak terpakai sejak awal.

Caranya adalah mengubah nama file bersamaan dengan isinya.

Diganti dengan nama yang sama, atau namanya sekalian diubah
Perbaiki isiapp.jsTaruh ulang dengannama yang samaGanti namanyaapp.a1b2.jsSalinan lokalyang dipakaiTidak ada di sini,jadi diambil
Bagian atas adalah saat hanya isinya yang diubah dengan nama yang sama, dan salinan lokal dipakai apa adanya. Bagian bawah mengubah namanya, jadi file itu dianggap tidak ada di sisi browser lalu diambil.

Kalau sebagian nama file diganti dengan karakter yang dihitung dari isinya, namanya ikut berubah setiap kali isinya berubah.

Kalau namanya berbeda, salinan lokal adalah file lain sehingga tidak dipakai.

Pekerjaan memberi nama ini dilakukan otomatis saat build.

Kamu tidak perlu memikirkan namanya sendiri.

FileCara penamaannyaCara menentukan masa berlakunya
index.htmlTidak diubahDibuat pendek
app.a1b2.jsNamanya berubah saat isinya berubahBoleh dibuat panjang
Aset seperti gambarNamanya berubah saat isinya berubahBoleh dibuat panjang

Hanya index.html sebagai pintu masuk yang namanya tidak bisa diubah, jadi masa berlakunya dibuat pendek.

Begitu nama file yang dimuat di dalamnya sudah baru, mulai dari situ versi barunya sampai secara otomatis.

Begitu ditemukan di titik yang lebih awal, pengambilannya tidak diteruskan lebih jauh.

Karena itu, kalau salinan lama masih tersimpan walau di 1 tempat saja, versi barunya tidak sampai.

Mengubah nama lebih pasti daripada menghapusi satu per satu

Kalau nama file ikut berubah saat isinya berubah, salinan lokal adalah file lain sehingga tidak dipakai.

Penamaan ini dilakukan build secara otomatis, jadi kamu cukup memendekkan masa berlaku untuk file pintu masuk yang namanya tidak bisa diubah.

QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Kamu sudah men-deploy ulang, tetapi di browser kamu layarnya masih yang lama. Saat dibuka di perangkat lain, tampilannya sudah baru. Di mana letak penyebabnya?

Soal 2Apa yang dilakukan browser ketika masa berlaku cache-nya belum habis?

Soal 3Apa yang terjadi kalau kamu mengatur supaya nama file ikut berubah saat isinya berubah?