Menyinggahkan berkas statis adalah kecepatan yang paling murah yang ada: perambannya tak bertanya sama sekali. Risikonya justru kebalikannya — sebuah lembar gaya yang disinggahkan setahun lalu perlu Anda ubah, di mesin yang tak bisa Anda jangkau.
Aturan yang membuat singgahan panjang jadi aman
Singgahkan dengan agresif HANYA berkas yang namanya ikut berubah ketika isinya berubah. Dengan begitu, sebuah perubahan berarti nama yang baru, singgahan lamanya tak lagi berarti, dan tak ada pengunjung yang pernah memegang berkas yang keliru.
/css/site.a1b2c3.css <- safe to cache for a year
/css/site.css?v=1788541047 <- the same idea, from the file mtime
Apa yang dipasang
location ~* \.(css|js|woff2|jpg|png|webp|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location ~* \.(html|php)$ {
add_header Cache-Control "no-cache";
}
immutable menyuruh peramban untuk bahkan tak repot-repot memeriksa ulang. Sementara no-cache pada HTML tidak berarti "jangan disinggahkan" — ia berarti "tanya aku dulu", dan itu justru tepat untuk halaman yang isinya berubah tanpa alamatnya berubah.
Periksa apa yang Anda kirimkan
curl -sI https://yourdomain.com/css/site.css | grep -iE "cache-control|expires|etag"
ETag dan Last-Modified
Keduanya membuat PEMERIKSAANNYA murah, bukan membuat permintaannya tak perlu: perambannya bertanya, servernya menjawab 304 Not Modified, dan tak ada badan yang dikirim. Bagus untuk HTML, dan untuk aset ia pilihan terbaik kedua setelah tidak bertanya sama sekali.