Skip to content

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@EdgeCloudFront Functions
Vị trí chạyEdge locations của CloudFront, gần userEdge locations của CloudFront, gần user
Ngôn ngữNode.js, PythonJavaScript (ECMAScript 2020)
Thời gian thực thiLên đến 15 phútRất nhanh, < 1 ms thường
Giới hạn tài nguyênMemory 128 MB - 3 GB, /tmp 512 MBMemory ~1 MB, no disk access
Use case chínhLogic phức tạp, auth, content manipulation, API proxy.Lightweight request/response manipulation, header modification → Đơn giản
TriggersViewer Request, Viewer Response, Origin Request, Origin ResponseViewer Request, Viewer Response
DeploymentPhứ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-secondsTính dựa trên số request, rẻ hơn nhiều
Cold startCó cold start (đặc biệt với Python)Gần như không có cold start
Phù hợp khiCần logic phức tạp, xử lý dữ liệu lớn, gọi backendChỉ cần modify header, redirect, routing, A/B testing, simple auth