Ghép cặp: chọn Cache-Control cho từng response Trung cấp
Thời gian đọc ước tính: 1 phút
Cache-Control quyết định ai được lưu response (không ai, chỉ trình duyệt, hay cả CDN) và được cũ đến mức nào. Kéo một bộ header vào từng response.
- Mỗi giải thích dẫn RFC 9111 (caching), RFC 9110 (status code, conditional request), RFC 5861 (
stale-while-revalidate) hoặc RFC 8246 (immutable). - Các cặp hay nhầm nhất:
no-cachevớino-store,privatevớipublic, vàno-cachevớimust-revalidatekhi request cóAuthorization.
Response này nên gửi Cache-Control nào?
Tám response của một shop online đặt sau CDN. Kéo bộ header phù hợp vào từng response. Một thẻ có thể dùng nhiều lần.
Mẹo: hỏi trước ai được lưu (không ai, chỉ trình duyệt, hay cả CDN), rồi được cũ đến mức nào trước khi phải hỏi lại origin.
Chạm Chọn đáp án ở từng tình huống. Trên máy tính có thể kéo thẻ bên dưới thả vào tình huống.
Đã giải 0/8 · sai 0 lần
1Build sinh ra app.3f9a1c.js; hash trong tên đổi mỗi khi nội dung đổi. Tên cũ không bao giờ được dùng lại.
GET /assets/app.3f9a1c.js
2GET /account hiển thị tên, địa chỉ và đơn gần đây của người đang đăng nhập. Session là cookie. Dữ liệu cũ tới 1 phút vẫn ổn, và nút back phải mở ngay.
Cookie: sid=9f3c...
3GET /statements/2026-09.pdf trả sao kê thanh toán có số thẻ và địa chỉ. Khách hay mở trên máy tính dùng chung ở văn phòng.
4GET /products?category=shoes giống nhau cho mọi khách và bị gọi 2.000 lần/giây lúc cao điểm (số minh hoạ). Giá và tồn kho được phép trễ khoảng một phút.
Vary: Accept-Encoding
5GET / trả HTML khung tham chiếu app.3f9a1c.js. Sau mỗi lần deploy, người dùng phải tải tên bundle mới trong vài giây.
<script src="/assets/app.3f9a1c.js"></script>
6GET /b2b/price/42 trả giá hợp đồng của công ty người gọi. Request có Authorization: Bearer ...; response 40 KB và không bao giờ được hiển thị khi origin chưa xác nhận là mới nhất.
Authorization: Bearer eyJ... (công ty 17)
7GET /r/ab3 trả 302 tới trang khuyến mãi. Đích có thể được sửa hoặc thu hồi trong vòng một phút, và origin đếm lượt click đầu tiên của mỗi khách.
HTTP/1.1 302 Found Location: https://shop.example/sale
8Một API gateway nội bộ (shared cache) đứng trước GET /reports/daily-sales (2 MB). Mọi caller gửi cùng service token trong Authorization. Báo cáo không bao giờ được trả bản cũ, nhưng gateway nên giữ bản sao để báo cáo không đổi chỉ tốn một 304 từ backend.
Authorization: Bearer svc-reporting ETag: "r-2026-10-28-1"
Cơ chế đằng sau từng thẻ (freshness, validation, Vary, 304): đọc HTTP caching. Cache cho redirect: đọc URL shortener.