</>
⌕
Mid #cache#cache-control#etag#performance

HTTP caching: `Cache-Control`, `ETag` và validation hoạt động ra sao?

⚡ Trả lời nhanh

Cache-Control điều khiển việc cache: max-age (thời gian fresh), no-cache (phải revalidate), no-store (không lưu), public/private. Khi hết hạn, trình duyệt gửi If-None-Match với ETag; nếu không đổi server trả 304 Not Modified không kèm body.

# Asset có hash trong tên file: cache một năm
Cache-Control: public, max-age=31536000, immutable

# HTML: luôn kiểm tra lại
Cache-Control: no-cache
ETag: "v42"

# Request tiếp theo
If-None-Match: "v42"
# Response: 304 Not Modified
DirectiveÝ nghĩa
max-age=NFresh trong N giây, không hỏi server
no-cacheĐược lưu nhưng phải revalidate mỗi lần
no-storeKhông lưu (dữ liệu nhạy cảm)
private / publicChỉ cache trình duyệt / cho phép cả CDN
stale-while-revalidateDùng bản cũ ngay, cập nhật nền
  • Chiến lược phổ biến: file tĩnh có hash (app.3f9a.js) cache dài; HTML no-cache; đổi nội dung thì đổi tên file (cache busting).
  • Last-Modified/If-Modified-Since là cách validate bằng thời gian, ETag chính xác hơn.
🃏 Ôn bằng flashcard