Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Lập trình Web & Backend] Bộ máy quyết định cache HTTP

    Quyết định phục vụ từ cache hay forward

    Giả lập một cache đứng giữa client và origin. Cho thông tin một mục đã lưu và request hiện tại, quyết định hành động:

    • Nếu mục cache no-store → luôn FORWARD (đi tới origin).
    • Nếu còn fresh (age < max-age) và KHÔNG no-cache → HIT (trả cache).
    • Nếu stale hoặc no-cache → cần revalidate:
      • Nếu có ETag → REVALIDATE (gửi conditional GET).
      • Nếu không có ETag → FORWARD.

    Kiểm tra theo đúng thứ tự trên.

    Yêu cầu

    Dòng 1: value Cache-Control của mục cache. Dòng 2: age. Dòng 3: ETag của mục cache (- nếu không có). In một trong: FORWARD, HIT, REVALIDATE.

    Ví dụ

    Input:

    max-age=100
    50
    "v1"
    

    Không no-store; age 50 < 100 và không no-cache → HIT.

    • Định dạng đầu vào:

      Dòng 1: Cache-Control. Dòng 2: age. Dòng 3: ETag hoặc '-'.

    • Ràng buộc đầu vào:

      max-age mặc định 0 nếu không có. no-store/no-cache là cờ.

    • Định dạng đầu ra:

      Một dòng: FORWARD / HIT / REVALIDATE.

    Ví dụ:

    Đầu vào:

    max-age=100
    50
    "v1"
    

    Đầu ra:

    HIT

    Giải thích:

    Không no-store, age 50 < max-age 100 và không no-cache nên phục vụ từ cache.

    Đang tải editor...