STATUS IS UPWIKI OPTIMASI SITUS WEB
20Percepat
Kinerja dan pengiriman / Percepat

Panduan Caching Browser untuk Pemilik Situs Web

Tetapkan aturan cache HTTP yang jelas sehingga kunjungan berulang menghindari unduhan yang tidak perlu tanpa menjebak pengunjung pada halaman lama atau konten terpersonalisasi yang tidak aman.

Panduan Caching Browser untuk Pemilik Situs Web — PANDUAN VISUAL
BACA
7 menit
SUMBER
6
VALIDASI ULANG
2027-03-27
ditinjau
Reviewer performa web dan rekayasa rilis
JAWABAN SINGKAT

Mulai dengan keputusan.

Gunakan aturan caching berbeda untuk setiap jenis URL. Berikan masa kesegaran (freshness lifetime) yang panjang untuk berkas yang isinya tidak pernah berubah pada URL tersebut, seperti JavaScript, CSS, font, dan gambar yang diberi nama dengan fingerprint; berikan HTML dan respons lain yang tidak versi kebijakan yang membuat browser melakukan validasi sebelum digunakan kembali saat kesegaran menjadi penting. Terbitkan URL aset baru setiap kali aset berubah; masa cache yang panjang tidak dapat diurungkan secara andal untuk salinan yang masih dianggap fresh.

Mulai dengan header Cache-Control yang eksplisit, lalu verifikasi header dan perilaku browser di lingkungan staging. Padukan respons yang ramah-validasi dengan ETag dan, bila tersedia, Last-Modified. Perlakukan respons yang dipersonalisasi, akun, checkout, dan sensitif secara terpisah dari halaman publik. SIU menggunakan pekerjaan ini sebagai optimisasi uptime proaktif: mengurangi pekerjaan origin yang dapat dihindari dan mencegah cacat rilis terkait cache sebelum mengganggu situs yang dapat digunakan.

PANDUAN VISUAL

Lihat pekerjaan sebagai sebuah sistem.

Gunakan peta ini untuk menghubungkan keputusan dalam artikel sebelum menerapkan taktik individual.

SIUPercepat
01Petakan kebijakan ke sumber daya, bukan ke server
02Gunakan istilah Cache-Control secara tepat
03Versi aset yang immutable sebelum memberi masa hidup panjang
04Buat HTML tetap mutakhir melalui validasi, bukan caching panjang
01

Petakan kebijakan ke sumber daya, bukan ke server

Inventarisasi URL representatif sebelum mengubah header: halaman utama, halaman konten, shell aplikasi, CSS, JavaScript, gambar, font, API, login, akun, checkout, dan unduhan. Untuk masing-masing, catat apakah respons bersifat publik atau dipersonalisasi, apakah URL-nya berubah saat byte-nya berubah, dan seberapa cepat koreksi harus sampai ke pengunjung.

Buat matriks kebijakan dari inventaris tersebut. Aset publik yang di-address berdasarkan konten membutuhkan aturan berbeda dari HTML pada alamat yang stabil. Respons tanpa Cache-Control masih dapat dicache secara heuristik, jadi aturan eksplisit lebih mudah diuji.

Freshness lifetime

Periode di mana respons tersimpan dapat digunakan kembali; max-age memberikannya dalam detik.

02

Gunakan istilah Cache-Control secara tepat

Cache-Control memberi tahu browser dan cache bersama bagaimana menyimpan dan menggunakan kembali sebuah respons. max-age=N mengizinkan penggunaan ulang selama masih fresh. s-maxage=N menetapkan kesegaran untuk cache bersama dan menimpa max-age di sana, tetapi browser mengabaikan s-maxage. public mengizinkan cache apa pun; private mengizinkan caching di browser namun mencegah penyimpanan pada cache bersama.

no-cache mengizinkan penyimpanan tetapi mengharuskan validasi ke origin sebelum digunakan kembali. no-store berarti cache tidak boleh menyimpan respons tersebut, tetapi bukan kontrol privasi yang lengkap. Gunakan must-revalidate saat menyajikan konten kadaluarsa setelah expiry tidak dapat diterima; origin yang tidak tersedia kemudian dapat menghasilkan 504 daripada fallback kadaluarsa.

Hindari no-store secara umum

Ia menghapus penyimpanan alih-alih hanya meminta pemeriksaan; gunakan hanya untuk respons yang memang tidak boleh disimpan.

03

Versi aset yang immutable sebelum memberi masa hidup panjang

URL aset yang diberi versi menyertakan fingerprint konten atau versi rilis, seperti app.4f2c.js. Ketika byte aset berubah, terbitkan URL berbeda dan perbarui referensi HTML. Cache melihat sumber daya baru, sehingga pengunjung mengambil aset baru tanpa perlu invalidasi mencapai setiap browser.

Untuk representasi yang tidak akan berubah selama masa kesegarannya, Cache-Control: max-age=31536000, immutable adalah pola praktis. immutable memberi tahu klien yang mendukung untuk tidak melakukan revalidasi kondisional selama masih fresh. Jangan menerapkannya atau max-age satu tahun pada berkas yang bersifat mutable pada URL yang sama. Pertahankan aset fingerprinted sebelumnya sementara HTML yang dicache masih dapat merujuk ke mereka.

HTML adalah manifes

HTML memilih URL aset, jadi urutan rilis harus mempertahankan generasi yang direferensikan.

04

Buat HTML tetap mutakhir melalui validasi, bukan caching panjang

HTML biasanya memiliki URL yang stabil dan berwajah manusia serta berubah dengan konten, referensi aset, feature flag, atau pemberitahuan keamanan. Pola konservatif untuk HTML publik adalah Cache-Control: no-cache dengan ETag dan Last-Modified ketika platform Anda dapat memproduksinya dengan benar. Browser menyimpan badan tetapi menggunakan permintaan kondisional sebelum digunakan kembali; respons yang tidak berubah dapat mengembalikan 304 Not Modified tanpa badan.

ETag mengidentifikasi versi sumber daya. Pada respons yang kadaluarsa, browser dapat mengirimkannya dalam If-None-Match; jika cocok, server membalas 304, jika tidak, server mengirimkan representasi baru. Pedoman RFC menganjurkan keduanya, ETag dan Last-Modified, pada respons 200 bila memungkinkan. no-cache tidak menjamin validasi pada navigasi Back atau Forward karena browser dapat memulihkan snapshot riwayat sesi.

Kualitas validator

ETag harus berubah ketika representasi berubah; uji ini lintas origin dan deployment.

05

Pisahkan pengiriman publik dari respons yang dipersonalisasi dan sensitif

Cache bersama, seperti CDN, dapat menggunakan kembali satu respons untuk banyak pengguna. Jangan biarkan cache bersama menggunakan kembali HTML atau data API spesifik akun antar pengguna. Untuk konten yang dipersonalisasi dan mungkin tinggal di browser, kombinasi private, no-cache adalah titik awal yang masuk akal: mencegah penyimpanan bersama dan mengharuskan validasi. Header Set-Cookie saja tidak menghentikan caching.

Untuk respons yang tidak boleh disimpan, gunakan no-store dan tinjau kode aplikasi, aturan CDN, service worker, penyimpanan browser, log, dan halaman error. Header saja bukan program privasi, kepatuhan, atau keamanan pembayaran yang lengkap. Libatkan penilai keamanan, privasi, dan pembayaran yang berkualifikasi untuk menilai alur sensitif dan persyaratan yang berlaku.

Perubahan otorisasi

Uji proses masuk, keluar, pergantian akun, dan perubahan izin dengan cache browser dan CDN yang sudah hangat.

06

Luncurkan perubahan cache sebagai rilis yang dapat dibalik

Ambil baseline header dan perilaku badan untuk permintaan tanpa cache dan permintaan berulang. Di staging, terapkan aset yang diberi versi terlebih dahulu, lalu HTML yang mereferensikannya, dan uji HTML yang dicache lama terhadap origin baru. Periksa jalur direct-origin dan CDN jika keduanya ada. Header Network di DevTools harus menunjukkan kebijakan yang dimaksud dan perilaku berulang.

Simpan manifes rilis berisi URL aset, aturan header, dan versi konfigurasi. Jika sebuah rilis menggabungkan berkas klien yang tidak kompatibel, kembalikan HTML dan perilaku aplikasi ke yang kompatibel, tetapi jangan menimpa berkas fingerprinted yang sudah diterbitkan. Arahkan kembali HTML ke generasi known-good dan pertahankan kedua generasi sementara HTML yang dicache mungkin masih memintanya. Purge cache bersama tidak dapat memaksa browser membuang respons yang masih fresh.

Remediasi proaktif

Ubah kegagalan uji header, 404 aset, dan mismatch versi menjadi perubahan pada checklist rilis berikutnya.

TINDAKAN / VERIFIKASI

Panduan tugas praktis Anda.

  1. 01

    Inventaris kelas respons

    Klasifikasikan contoh URL sebagai publik atau dipersonalisasi, mutable atau diberi versi.

    VERIFIKASI: Mencakup HTML, aset, API, autentikasi, akun, checkout, dan error.
  2. 02

    Ambil header saat ini

    Catat Cache-Control, ETag, Last-Modified, Age, Vary, dan status di origin dan CDN.

    VERIFIKASI: Snapshot pra-perubahan tersedia untuk setiap sampel.
  3. 03

    Fingerprint aset yang mutable

    Buat build menerbitkan URL aset baru ketika byte-nya berubah.

    VERIFIKASI: Aset yang berubah menghasilkan URL dan referensi HTML yang berubah.
  4. 04

    Tetapkan kebijakan eksplisit

    Gunakan aturan berumur panjang hanya untuk URL versi yang immutable; gunakan aturan ramah-validasi untuk URL yang stabil.

    VERIFIKASI: Tes header cocok dengan kebijakan yang dimaksud.
  5. 05

    Uji validasi

    Periksa bahwa dokumen yang tidak berubah mengembalikan 304 setelah permintaan kondisional dan yang berubah mengembalikan 200 dengan ETag baru.

    VERIFIKASI: Tracing di staging menunjukkan kedua jalur tersebut.
  6. 06

    Uji batas privasi

    Uji dua akun, sign-out, perubahan peran, dan rute sensitif dengan cache yang hangat.

    VERIFIKASI: Tidak ada respons dipersonalisasi yang melintasi pengguna.
  7. 07

    Buktikan kompatibilitas rilis

    Muat HTML yang dicache sebelumnya setelah rilis berikutnya.

    VERIFIKASI: HTML sebelumnya dan saat ini memuat aset yang direferensikannya tanpa 404 atau error skrip.
  8. 08

    Dokumentasikan rollback

    Catat generasi yang baik, versi header, pemilik, dan periode retensi aset lama.

    VERIFIKASI: Drill non-produksi mengembalikan generasi known-good tanpa mengedit URL immutable.
TOPIK DISKUSI

Bandingkan kompromi, bukan data pribadi.

Gunakan prompt ini dengan tim Anda atau komunitas pemilik situs. Bagikan metode dan pelajaran, tetapi jangan pernah menempelkan kredensial, data pelanggan, atau detail infrastruktur yang tidak bersifat publik.

  1. 01

    Kelas URL mana di situs Anda yang paling sulit diklasifikasikan sebagai publik, dipersonalisasi, immutable, atau sering berubah, dan bagaimana Anda mendokumentasikan keputusannya?

  2. 02

    Tes urutan rilis mana yang paling berguna untuk menangkap mismatch HTML lama dan aset baru sebelum pengunjung mengalaminya?

  3. 03

    Di mana aturan CDN, aplikasi, dan cache browser Anda saling tumpang tindih, dan siapa yang bertanggung jawab memverifikasi bahwa perilaku gabungan mereka sesuai kebijakan yang dimaksud?

SUMBER POPULER / TERPERCAYA

Buka materi sumber.

IETFRFC 9111: HTTP Caching ↗

Menjelaskan kesegaran, validasi, direktif cache, invalidasi, dan batasan informasi sensitif.

Ditinjau 2026-09-27
IETFRFC 8246: HTTP Immutable Responses ↗

Mendefinisikan caching immutable, cakupannya, dan pertimbangan korupsi.

Ditinjau 2026-09-27
MDN Web DocsHTTP caching ↗

Panduan praktis tentang validator, 304, personalisasi, dan cache-busting.

Ditinjau 2026-09-27
MDN Web DocsCache-Control header ↗

Referensi untuk max-age, s-maxage, no-cache, no-store, private, public, dan must-revalidate.

Ditinjau 2026-09-27
MDN Web DocsETag header ↗

Menjelaskan entity tag, If-None-Match, dan validasi 304.

Ditinjau 2026-09-27
web.devPrevent unnecessary network requests with the HTTP Cache ↗

Panduan praktis tentang URL berversi, validator, kebijakan, dan deployment.

Ditinjau 2026-09-27

Kebijakan sumber. Artikel ini menggunakan standar bacaan dan dokumentasi teknis pihak pertama. Artikel menghindari klaim performa yang tidak didukung dan memisahkan aturan HTTP dari konfigurasi spesifik platform.

PENJELASAN SINGKAT

Pertanyaan umum.

Apakah no-cache berarti browser tidak boleh menyimpan halaman?

Tidak. no-cache mengizinkan penyimpanan tetapi mengharuskan validasi yang sukses dengan origin sebelum digunakan kembali. Gunakan no-store hanya ketika respons tidak boleh disimpan, sambil menyadari bahwa no-store sendiri bukan jaminan privasi lengkap.

Haruskah setiap file statis menerima masa cache satu tahun?

Tidak. max-age satu tahun hanya tepat ketika byte URL tidak akan berubah selama periode itu, biasanya karena URL diberi fingerprint atau versi. Berkas mutable dengan URL yang sama membutuhkan kebijakan yang lebih pendek atau berbasis validasi.

Dapatkah purge CDN memperbaiki kesalahan caching di browser?

Ia dapat menghapus salinan di cache bersama yang dikelola, tetapi tidak dapat memaksa setiap browser membuang respons yang masih fresh. Terbitkan URL aset versi baru dan perbarui referensi HTML; lalu gunakan rencana rollback untuk memulihkan generasi yang kompatibel bila diperlukan.

Status Is UP Editorial Team · Editor Uptime Enablement

Ditinjau oleh Reviewer performa web dan rekayasa rilis. Diterbitkan 2026-09-27; diperbarui 2026-09-30.