Cache Behavior là gì
Cache Behavior xác định cách CloudFront xử lý và cache các request từ người dùng cho một nhóm đường dẫn (path pattern) cụ thể.
Bạn có thể cấu hình một behavior mặc định và nhiều behavior bổ sung để xử lý các loại nội dung khác nhau (ví dụ: hình ảnh, API, video).
Path Pattern trong Cache Behavior
- Default behavior: áp dụng cho tất cả request nếu không có behavior nào khác khớp.
- Custom behaviors: áp dụng cho các path cụ thể, ví dụ:
/images/*→ TTL dài hơn cho hình ảnh./api/*→ TTL ngắn hoặc tắt cache.
- Thứ tự ưu tiên: CloudFront sẽ chọn behavior có path pattern khớp chính xác nhất.
Viewer Protocol Policy là gì
Quy định giao thức mà người dùng được phép sử dụng:
- HTTP and HTTPS: cho phép cả hai.
- Redirect HTTP to HTTPS: tự động chuyển hướng sang HTTPS.
- HTTPS Only: bắt buộc dùng HTTPS.
Khuyến nghị: dùng Redirect HTTP to HTTPS để đảm bảo bảo mật.
Allowed HTTP Methods
Xác định phương thức HTTP mà CloudFront chấp nhận:
- GET, HEAD (default): dành cho nội dung tĩnh.
- GET, HEAD, OPTIONS: hỗ trợ thêm CORS preflight.
- All Methods: bao gồm POST, PUT, PATCH, DELETE — thường cho API hoặc dynamic content.
Cache Policy
Cache Policy cho phép tùy chỉnh:
- TTL (Time to Live):
- Minimum TTL: thời gian ngắn nhất CloudFront cache một object.
- Maximum TTL: thời gian dài nhất giữ object trong cache.
- Default TTL: TTL mặc định nếu origin không gửi header cache-control.
- Cache Key: yếu tố để xác định một object cache riêng biệt:
- Query strings (toàn bộ hoặc chỉ một số key).
- Headers (ví dụ:
Accept-Language,User-Agent). - Cookies (toàn bộ hoặc một số tên cookie).
Origin Request Policy
Quyết định thông tin nào từ request của viewer sẽ được gửi tới origin:
- Query strings: gửi tất cả, một phần, hoặc không gửi.
- Headers: chỉ gửi các header cần thiết.
- Cookies: gửi toàn bộ hoặc một số cookie.
Tối ưu origin request policy giúp giảm tải cho origin và tăng cache hit rate.
Compress Objects Automatically
Bật Gzip hoặc Brotli cho nội dung text-based (HTML, CSS, JS, JSON…) để giảm dung lượng truyền tải và tăng tốc độ tải trang.
Lambda@Edge và CloudFront Functions
Bạn có thể gắn Lambda@Edge hoặc CloudFront Functions vào behavior để:
- Thay đổi request/response.
- Thêm/bỏ header.
- Tạo redirect.
- Thực hiện authentication/authorization tại edge.
| Tiêu chí | Lambda@Edge | CloudFront Functions |
|---|---|---|
| Vị trí chạy | Edge locations của CloudFront, gần user | Edge locations của CloudFront, gần user |
| Ngôn ngữ | Node.js, Python | JavaScript (ECMAScript 2020) |
| Thời gian thực thi | Lên đến 15 phút | Rất nhanh, < 1 ms thường |
| Giới hạn tài nguyên | Memory 128 MB - 3 GB, /tmp 512 MB | Memory ~1 MB, no disk access |
| Use case chính | Logic phức tạp, auth, content manipulation, API proxy. | Lightweight request/response manipulation, header modification → Đơn giản |
| Triggers | Viewer Request, Viewer Response, Origin Request, Origin Response | Viewer Request, Viewer Response |
| Deployment | Phức tạp hơn, cần package Lambda, upload → replicate tới edge | Đơn giản, trực tiếp từ console hoặc API, replicate nhanh |
| Chi phí | Tính dựa trên số request + duration + GB-seconds | Tính dựa trên số request, rẻ hơn nhiều |
| Cold start | Có cold start (đặc biệt với Python) | Gần như không có cold start |
| Phù hợp khi | Cần logic phức tạp, xử lý dữ liệu lớn, gọi backend | Chỉ cần modify header, redirect, routing, A/B testing, simple auth |