APPLICATION & LOAD

Kiểm thử HTTP cache và CDN: cache key, stale, purge và origin failover

16/8/2026 · 16 phút

Nhiều client truy cập các CDN edge, origin shield và origin trong bài kiểm thử cache có kiểm soát
Mục lục bài viết 9 phần

Cache hit ratio cao không bảo đảm nội dung đúng: một cache key thiếu header có thể trả nhầm biến thể, purge chậm có thể giữ dữ liệu cũ, còn origin lỗi có thể biến stale-if-error thành lợi ích hoặc rủi ro. Bài đo cần kiểm chứng correctness trước khi tối ưu tỷ lệ hit.

ĐỌC NHANH

Bài viết giúp bạn

  • Câu hỏi kỹ thuật cần trả lời
  • Topology và điểm quan sát
  • Biến số và traffic profile
Tùy chỉnh đọc
01

Câu hỏi kỹ thuật cần trả lời

#

Bài đo phải tách bốn nhóm câu hỏi. Correctness: client có nhận đúng object/variant theo URL, query, header, cookie, encoding và quyền hay không. Freshness: cache giữ, revalidate và phục vụ stale theo policy nào. Performance: latency, throughput và connection load thay đổi ra sao giữa MISS, HIT và revalidation. Resilience: khi origin chậm/lỗi, cache có bảo vệ dịch vụ nhưng vẫn tuân thủ dữ liệu không được phép stale hay không.

Đừng đặt mục tiêu “hit ratio càng cao càng tốt”. Nội dung cá nhân hóa hoặc chứa authorization bị cache sai có thể tạo sự cố bảo mật dù latency rất đẹp. Mỗi object trong corpus cần expected cacheability, expected key dimension, TTL và response hash.

02

Topology và điểm quan sát

#

Topology tham chiếu gồm load generator ở một hoặc nhiều region, DNS, CDN edge, optional origin shield, load balancer và origin test. Điểm đo tại client ghi status, header, body hash và timing; CDN log ghi cache status, POP, key/variant nếu có; origin log ghi request count, correlation ID và backend latency.

Để đo purge propagation, cần ít nhất hai edge/POP hoặc endpoint đại diện. Để đo protection, origin test phải có khả năng thêm latency, trả 5xx, reset connection hoặc timeout theo marker có kiểm soát. Không gây lỗi trên origin sản xuất nếu chưa có authorization, isolation và rollback.

Minh họa: Topology và điểm quan sát
Minh họa: Topology và điểm quan sát
03

Biến số và traffic profile

#

Ghi CDN/service version hoặc cấu hình, origin headers, cache rules, TTL, negative caching, Vary, query normalization, cookie/header allowlist, compression, range request, redirect, authentication, purge API và shield. Khóa DNS TTL, TLS, HTTP version và client region vì chúng ảnh hưởng latency nhưng không thuộc cache engine.

Corpus nên có static object nhỏ/lớn, HTML, API JSON, 200/206/301/404/5xx, query parameter có/không ảnh hưởng nội dung, Accept-Encoding, locale, device variant, cookie, authorization và nội dung tuyệt đối không được cache. Traffic profile tách cold-cache, warm-cache, mixed working set, burst và long-tail.

Nhóm biến · Cần ghi · Rủi ro nếu bỏ qua Key · URL, query, header, cookie, Vary · Trả nhầm variant hoặc giảm hit Freshness · Cache-Control, TTL, validator · Đánh giá sai stale/revalidation Object · size, type, status, range · Kết quả không đại diện workload Edge · POP, shield, region · Trộn cache riêng thành một số tổng Protocol · HTTP/2/3, TLS, compression · Nhầm latency transport với cache Origin · capacity, timeout, error model · Không đo được offload/resilience

04

Baseline correctness và cache key

#

Trước khi tạo tải, gửi từng corpus item theo chuỗi MISS → HIT → hết TTL/revalidate. So sánh body hash, response headers, Age/validator và origin log. Với mỗi biến thể, thay một dimension và xác nhận cache tách hoặc gộp đúng expected key. Không dựa hoàn toàn vào header cache status do vendor cung cấp; origin request count và content hash là bằng chứng độc lập.

Kiểm tra poison/leak theo cách an toàn: dùng dữ liệu tổng hợp và hai tenant/account giả, không dùng thông tin thật. Response của tenant A không được xuất hiện ở tenant B. Các request có Authorization hoặc cookie phải tuân thủ policy đã chốt; RFC cho phép hành vi phụ thuộc directive nên cần đọc cả cấu hình CDN.

05

KPI và bằng chứng

#

KPI correctness gồm wrong-object rate, wrong-variant rate, unauthorized cache exposure và stale-beyond-policy. KPI performance gồm client latency p50/p95/p99, requests/s, bytes/s, edge error rate, origin request rate và connection count. Hit ratio nên báo theo request và byte vì object lớn/nhỏ ảnh hưởng khác nhau.

KPI · Cách đo · Bằng chứng Correct object · Body hash + variant ID · Client log và manifest expected Cache hit ratio · HIT/(HIT+MISS...) · CDN log đối chiếu origin count Byte offload · Bytes edge phục vụ / total · Edge và origin byte counters Freshness · Age/validator/content version · Timeline object update Purge propagation · Từ purge ack đến mọi edge mới · Probe đa vùng có timestamp Origin protection · Origin RPS/connections khi burst · Origin metrics + edge result Stale behavior · Kết quả khi origin lỗi · Status, Warning/Age, content version

Định nghĩa purge completion phải rõ: API nhận lệnh, edge đầu tiên hết object hay tất cả probe quan sát version mới. Nếu polling 5 giây, không công bố độ chính xác mili giây.

06

Ma trận quyết định

#

Ma trận nên kết hợp trạng thái cache và trạng thái origin. Một policy pass ở origin khỏe có thể fail khi timeout hoặc trả 5xx. stale-while-revalidate và stale-if-error phải kiểm tra trong đúng cửa sổ, không suy đoán từ tên directive.

Kịch bản · Kỳ vọng cần chốt · Rủi ro Cold MISS · Một request về origin hoặc collapse đúng · Thundering herd Warm HIT · Đúng object, latency ổn định · Key sai/variant leak TTL hết · Revalidate bằng validator nếu có · Origin burst Purge · Version mới trong thời gian cam kết · Edge lệch trạng thái Origin chậm · Timeout/retry/stale theo policy · Latency cộng dồn Origin 5xx · Stale hoặc lỗi theo loại content · Che lỗi quá lâu 404/negative cache · TTL riêng, purge đúng · Giữ lỗi sau khi object xuất hiện Range request · 206/body range đúng · Cache fragment sai

Minh họa: Ma trận quyết định
Minh họa: Ma trận quyết định
07

Test plan thực hành

#

Mỗi lần chạy cần correlation ID nhưng tránh đưa ID ngẫu nhiên vào cache key nếu mục tiêu là tạo HIT. Có thể đặt ID trong header bị loại khỏi key và xác nhận rule này. Load generator phải tái sử dụng connection theo hành vi gần client thật; một connection mới cho mỗi request làm sai latency và origin load.

  • Lưu cache rules, origin headers, DNS/TLS/HTTP version và POP mục tiêu.
  • Tạo manifest corpus với expected key, cacheability, TTL và body hash.
  • Xóa cache trong phạm vi test hoặc dùng namespace/version riêng.
  • Chạy chuỗi MISS/HIT/revalidate từng object, đối chiếu origin log.
  • Chạy hai tenant/variant tổng hợp để kiểm tra isolation.
  • Tạo cold burst và warm burst; đo request collapse, hit và origin offload.
  • Cập nhật object, chờ TTL và đo freshness tại nhiều probe.
  • Gửi purge; đo propagation và kiểm tra object cũ không quay lại.
  • Chèn origin latency/timeout/5xx có kiểm soát; kiểm tra stale behavior.
  • Chạy tải hỗn hợp, lặp lại và báo median/p95/worst case.
08

Giới hạn của kết luận

#

Kết quả ở vài POP không chứng minh toàn mạng CDN. Log có thể đến trễ hoặc sampling; cần ghi cửa sổ quan sát. Hit ratio trên corpus nhỏ không đại diện long-tail production. Origin offload cao không chứng minh correctness hoặc security.

Hành vi cụ thể phụ thuộc CDN, rule order, product tier và phiên bản. RFC định nghĩa semantics HTTP caching nhưng nhà cung cấp có purge API, shield, request collapsing và log field riêng. Không công bố SLA purge, global hit ratio hay khả năng chống DDoS nếu bài đo không bao phủ.

09

Khái niệm cần nhớ

#
  • Cache key: Tập thuộc tính quyết định hai request có dùng chung object cache hay không.
  • Freshness lifetime: Khoảng thời gian response được xem là fresh.
  • Revalidation: Hỏi origin xem representation còn hợp lệ, thường dùng ETag/Last-Modified.
  • stale-while-revalidate: Cho phép phục vụ stale trong khi cập nhật nền theo directive.
  • stale-if-error: Cho phép dùng stale khi gặp một số lỗi trong cửa sổ quy định.
  • Origin shield: Lớp cache trung gian giảm fan-out từ nhiều edge về origin.
  • Request collapsing: Gộp nhiều MISS đồng thời cho cùng object thành ít origin request hơn.
  • Purge: Xóa hoặc vô hiệu object cache trước khi TTL tự hết.
THUẬT NGỮ NHANH

Khái niệm cần nhớ

DUT / SUT
Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
Steady state
Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
Pass / fail
Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo4 nguồn

Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.

Nguyên tắc biên tập

NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.

Thông số và khả năng sản phẩm có thể thay đổi theo phiên bản. Hãy đối chiếu tài liệu chính thức trước khi xây dựng cấu hình hoặc tiêu chí nghiệm thu.
BẮT ĐẦU TỪ BÀI TOÁN

Cần chuyển kiến thức thành test plan?

Chia sẻ mục tiêu, topology và ràng buộc kỹ thuật. NetVali sẽ cùng bạn xác định bài đo phù hợp.

Trao đổi yêu cầu kỹ thuật