Từ 250ms xuống 0ms: request “đi tắt” qua 4 tầng cache
Tóm tắt
Hệ thống thường có nhiều tầng cache: trình duyệt, CDN, Redis, rồi mới tới database. Request đi từ trên xuống và dừng ở tầng đầu tiên có dữ liệu. Lần đầu (miss hết) tốn nhiều nhất, nhưng trên đường về dữ liệu được lưu lại ở từng tầng cho các lần sau.
Ba lượt request
| Lượt | Dừng ở tầng | Thời gian |
|---|---|---|
| 1 — cache nguội | Database (miss cả 3 tầng cache) | ~250ms |
| 2 | Browser | ~0ms |
| 3 — TTL tầng trên hết hạn | Redis | ~80ms |
Áp dụng thế nào?
- Chặn càng sớm càng tốt: tầng càng sâu càng đắt; ưu tiên cache ở browser/CDN cho nội dung tĩnh hoặc ít thay đổi (
Cache-Control,ETag). - Đặt TTL theo mức độ chấp nhận dữ liệu cũ của từng loại dữ liệu — giá sản phẩm khác ảnh đại diện.
- Có chiến lược invalidation khi dữ liệu thay đổi (xoá key Redis, purge CDN), đừng chỉ chờ TTL.
- Cẩn thận dữ liệu riêng tư: không để CDN cache response chứa thông tin cá nhân (
Cache-Control: private). - Theo dõi hit rate của từng tầng; hit rate thấp nghĩa là cache đang tốn tiền mà không giúp gì.