Trình duyệt cache response theo header từ server, giúp lần truy cập sau không phải tải lại asset:
Cache-Control: max-age=N— response còn "tươi" trongNgiây; trong khoảng đó trình duyệt dùng bản cache không hỏi server (nhanh nhất). Thêmimmutableđể báo file không bao giờ đổi nội dung.ETag(validation): server gắn mã định danh nội dung; khi cache hết hạn, trình duyệt gửiIf-None-Match— nội dung chưa đổi thì server trả304 Not Modifiedkhông kèm body → tiết kiệm băng thông nhưng vẫn tốn một round-trip.- Cache busting bằng hash filename: bundler nhúng hash nội dung vào tên file (
app.3f9a1c.js). Nhờ đó asset đặt đượcmax-age=31536000, immutable(cache 1 năm, không bao giờ revalidate) — khi deploy bản mới, nội dung đổi → hash đổi → URL mới, trình duyệt tự tải bản mới.
Cặp đôi chuẩn: HTML dùng no-cache (luôn revalidate để lấy danh sách asset mới nhất), còn asset có hash cache vĩnh viễn. Đây là mặc định của Next.js/Vite khi build production.