
1. Giới thiệu (Introduction)
1.1. CDN giúp tăng tốc truy cập nội dung toàn cầu
1.2. Cache nội dung tĩnh tại edge nodes gần người dùng
1.3. Giảm latency, giảm tải origin, tăng availability
2. Use Cases
2.1. Streaming video: Netflix, YouTube
2.2. Website tĩnh: Landing page, blog
2.3. SaaS apps: Google Docs, Notion
2.4. Update phần mềm: game, app, firmware
2.5. Hệ thống lớn toàn cầu cần phân phối nội dung nhanh
3. Requirements
3.1. Functional
3.1.1. Truy cập nội dung từ mọi nơi trên thế giới
3.1.2. Hỗ trợ cache TTL, manual purge
3.1.3. Giao diện quản lý nội dung CDN
3.2. Non-functional
3.2.1. Latency thấp toàn cầu
3.2.2. High availability, fault-tolerant
3.2.3. Scale theo lượng user/ngày
4. CDN hoạt động như thế nào?
4.1. Edge node lưu cache nội dung
4.2. Khi request đến
4.2.1. Nếu có cache → trả ngay
4.2.2. Nếu không → gọi origin, cache lại
4.3. Giảm chi phí và tải cho backend
5. Tiered CDN
5.1. Cấu trúc nhiều tầng: edge → mid-tier → origin
5.2. Tăng cache hit rate, giảm request về origin
6. Cache Invalidation
6.1. max-age=N TTL (Time to live). Cache hợp lệ trong N giây. Sau đó bị xem là stale.
6.1.1. stale cache: Cache đã hết hạn (max-age đã hết), nhưng vẫn có thể tạm thời dùng được (tuỳ chính sách).
6.1.2. stale-while-revalidate: Cho phép trả về bản cache stale ngay lập tức cho client, đồng thời phía sau sẽ trigger fetch nội dung mới từ origin và update cache.
6.2. Conditional request: ETag, Last-Modified
6.2.1. ETag (Entity Tag): 1 giá trị hash hoặc version string đại diện cho nội dung của resource (ví dụ: ETag: "abc123xyz").
6.2.2. Last-Modified Là timestamp cho biết tài nguyên lần cuối được sửa đổi khi nào: Last-Modified: Mon, 08 Jun 2025 10:20:00 GMT
6.2.3. Khi client (browser hoặc CDN) nhận được 1 bản response có ETag, nó sẽ lưu giá trị này cùng với cache.
6.2.4. Khi client request lại tài nguyên, nó gửi header
6.2.4.1. Nếu nội dung chưa thay đổi → trả về 304 Not Modified → client dùng lại cache (nhanh, tiết kiệm băng thông).
6.2.4.2. Nếu nội dung thay đổi → trả về 200 OK + nội dung mới + ETag mới + Last-Modified mới.Nếu nội dung thay đổi → trả về 200 OK + nội dung mới + ETag mới + Last-Modified mới.
6.3. Manual invalidation API
6.3.1. Purging
6.3.1.1. Purging = API hoặc tool yêu cầu CDN xoá cache ngay lập tức.
6.3.1.2. Purge by URL Xoá cache 1 URL cụ thể (/img/logo.png)
6.3.1.3. Purge by tag / key Xoá nhóm nội dung có chung tag (VD: all /products/*)
6.3.1.4. Purge All (global purge) Xoá toàn bộ cache CDN (rất nặng, dùng thận trọng)
6.3.2. Cache Busting (Thay đổi URL để ép cache miss)
7. Cache Purging
7.1. Xóa cache lập tức, ví dụ khi nội dung sai
7.2. Purge theo URL, prefix, tag
7.3. Có thể thực hiện qua API hoặc UI
8. Physical Edge Nodes
8.1. Định nghĩa
8.1.1. Máy chủ CDN vật lý đặt tại các vị trí gần người dùng để cache và phục vụ nội dung
8.1.2. ISP (Internet Service Provider): Nhà mạng cung cấp kết nối Internet cho người dùng cuối ví dụ VNPT, Viettel, FPT Telecom ...
8.1.3. IXP (Internet Exchange Point): Điểm trung chuyển giúp các ISP, CDN và các hệ thống mạng trao đổi dữ liệu trực tiếp VNIX: Việt Nam, HKIX Hong Kong ...
8.2. Vị trí & Triển khai
8.2.1. Trong hạ tầng của ISP: Các CDN như Cloudflare, Netflix Open Connect đặt Edge Server trực tiếp trong mạng của ISP để gần người dùng, giảm latency.
8.2.2. Tại các IXP: CDN triển khai node tại các IXP lớn, nơi có nhiều ISP cùng kết nối, giúp phân phối nội dung đến nhiều ISP cùng lúc, tiết kiệm chi phí và tăng hiệu suất.
9. Selecting Node: DNS
9.1. Cơ chế hoạt động
9.1.1. Dựa vào địa chỉ IP client trong truy vấn DNS để trả về địa chỉ IP của node gần nhất
9.1.2. Tầng xử lý: Application Layer – DNS layer
9.1.3. DNS resolver/CDN DNS system quyết định node
9.2. Ưu điểm: đơn giản, dễ tích hợp
9.3. Nhược điểm: không luôn chính xác
9.4. Flow Example
9.4.1. 1. User → Truy cập www.example.com
9.4.2. 2. User gửi DNS Query đến Recursive DNS Resolver (VD: 8.8.8.8)
9.4.3. 3. Resolver gửi truy vấn đến CDN Authoritative DNS (ví dụ: cdn.example.com)
9.4.4. 4. CDN DNS phân tích IP của Resolver → chọn Edge Node "gần nhất" (hoặc dựa vào geo-location, ISP, tải hệ thống…)
9.4.5. 5. CDN DNS trả về IP của Edge Node (VD: 123.45.67.89)
9.4.6. 6. User gửi HTTP(S) Request đến IP đó → Edge Node trả nội dung
9.4.7. Điểm mấu chốt: • Quyết định node được chọn nằm ở tầng DNS. • Độ chính xác phụ thuộc vào vị trí của DNS resolver, không phải luôn chính xác vị trí người dùng thực. • Dễ kiểm soát routing logic, nhưng có thể chọn sai node nếu DNS resolver ở xa user.
10. Selecting Node: Anycast
10.1. Cơ chế hoạt động
10.1.1. Cùng một địa chỉ IP được quảng bá từ nhiều node khác nhau, router định tuyến tự chọn node gần nhất
10.1.2. Tầng xử lý: Mạng (Network Layer – IP routing layer)
10.1.3. Hệ thống định tuyến (BGP) của Internet quyết định node
10.2. Ưu điểm: độ chính xác rất cao
10.3. Nhược điểm: Phức tạp hơn, cần kiến thức về BGP & hệ thống định tuyến
10.4. Flow Example
10.4.1. 1. User → Truy cập www.example.com
10.4.2. 2. DNS trả về một IP duy nhất (Anycast IP, ví dụ: 1.1.1.1) (Mọi user trên thế giới đều nhận cùng một IP)
10.4.3. 3. User gửi HTTP(S) Request đến IP đó
10.4.4. 4. Hệ thống định tuyến BGP của Internet chọn đường đi "tốt nhất" → Yêu cầu đến Edge Node quảng bá IP đó gần nhất với user (về mạng)
10.4.5. 5. Edge Node gần nhất xử lý và trả về nội dung
10.4.6. Điểm mấu chốt: Chỉ có 1 IP duy nhất, node được chọn nhờ hệ thống định tuyến (routing layer). • Độ trễ rất thấp, vì dựa vào topology mạng thực tế. • Khó kiểm soát logic, nhưng cực kỳ hiệu quả cho static content, DNS services, API phân tán.
11. Redundancy (Dư thừa)
11.1. Mỗi nội dung được cache nhiều node
11.2. Failover node nếu lỗi
12. Existing Solutions
12.1. Cloudflare: miễn phí, hỗ trợ WAF
12.2. AWS CloudFront: tích hợp tốt với AWS
12.3. Fastly: cấu hình mạnh, edge compute
12.4. Google Cloud CDN: tốt cho BigQuery, GCS
12.5. Vercel - All in one solution for webapps
13. Tài liệu tham khảo
13.1. Cloudflare CDN Overview: https://www.cloudflare.com/learning/cdn/what-is-a-cdn/
13.2. AWS CloudFront Documentation: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
13.3. Google Cloud CDN: https://cloud.google.com/cdn/docs
14. Ví dụ thực tế & Trải nghiệm cá nhân
14.1. Dự án E-learning Platform
14.1.1. Dùng CloudFront để phân phối video bài giảng tới học viên ở nhiều quốc gia, giảm chi phí băng thông AWS S3.
14.2. Pixel - Web Traffic Solution
14.2.1. Cache script để lấy dữ liệu user traffic thông qua giải pháp pixel
14.3. Optimize Webapp
14.3.1. Cache App JS Bundle,External Libraries, shared UI libs