CDN (Content Delivery Network) là mạng lưới máy chủ đặt ở nhiều thành phố, lưu bản sao nội dung website để phục vụ người xem từ điểm gần họ nhất. Nhờ vậy trang tải nhanh hơn, máy chủ gốc đỡ tải hơn. Website cần CDN nhất là website có khách ở xa máy chủ, nặng ảnh và video, hoặc hay bị tăng truy cập đột biến.

Hãy nghĩ về một chuỗi cửa hàng. Kho tổng ở Hà Nội. Nếu khách ở Cần Thơ đặt hàng nào cũng chờ chuyển từ Hà Nội, sẽ chậm. Đặt kho phụ ở Cần Thơ chứa sẵn hàng bán chạy, khách nhận nhanh hơn, kho tổng đỡ việc. CDN chính là hệ thống kho phụ đó.

CDN hoạt động thế nào

Máy chủ gốc và điểm biên

Máy chủ gốc (origin) là hosting hoặc VPS chứa website thật. Điểm hiện diện (PoP) là các cụm máy chủ CDN đặt ở nhiều nơi. Khi bật CDN, người xem kết nối tới PoP gần nhất thay vì kết nối thẳng về máy chủ gốc.

Cache HIT và MISS

Lần đầu có người xin một file, PoP chưa có, nó phải lấy từ máy chủ gốc. Đó là MISS. PoP lưu lại bản sao. Người tiếp theo xin đúng file đó được phục vụ ngay từ PoP. Đó là HIT. Tỷ lệ HIT càng cao, CDN càng hiệu quả.

Bạn có thể xem trạng thái này trong header phản hồi HTTP. Mỗi CDN đặt tên header hơi khác nhau, thường có chữ "cache" trong tên.

Thời gian lưu đệm

Mỗi file được giữ trong cache một khoảng thời gian (TTL), điều khiển bằng header như Cache-Control. Hết hạn, PoP hỏi lại máy chủ gốc. Ảnh, CSS, JavaScript ít thay đổi nên TTL dài. Trang có giỏ hàng, tài khoản người dùng thì không nên cache.

CDN mang lại gì

  • Tốc độ: khoảng cách vật lý ngắn hơn, độ trễ thấp hơn. Khác biệt rõ nhất khi khách ở khác châu lục hoặc khác khu vực với máy chủ.
  • Giảm tải máy chủ gốc: phần lớn file tĩnh do CDN phục vụ, máy chủ gốc chỉ lo phần động.
  • Chịu được đột biến: bài viết lan truyền, chương trình khuyến mãi. CDN hấp thụ lượng truy cập tĩnh lớn mà máy chủ nhỏ không kham nổi.
  • Bảo mật: nhiều CDN dạng proxy giấu IP gốc, có tường lửa ứng dụng web và lớp chống DDoS.
  • Tiết kiệm lưu lượng: máy chủ gốc gửi ít dữ liệu ra ngoài hơn.

Những điều CDN không làm được

  • Không cứu được mã nguồn chậm. Trang động tốn vài giây để tạo trên máy chủ gốc thì qua CDN vẫn chậm, trừ khi trang đó được cache.
  • Không thay sao lưu. Dữ liệu thật vẫn ở máy chủ gốc.
  • Không luôn có PoP gần khách Việt Nam. Một số CDN có PoP ngay trong nước, số khác phục vụ khách Việt Nam từ Singapore hoặc Hồng Kông. Hãy kiểm tra danh sách PoP và cách định tuyến thực tế.
  • Thêm một lớp phải quản lý. Cấu hình sai có thể khiến khách thấy nội dung cũ, hoặc tệ hơn, thấy trang của người khác nếu cache nhầm trang có thông tin cá nhân.

Website nào thực sự cần CDN

Loại websiteMức cần CDNLý do
Blog nhỏ, khách trong nước, máy chủ trong nướcThấpKhoảng cách đã gần, lượng truy cập vừa phải
Website khách trong nước, máy chủ ở nước ngoàiTrung bình đến caoCDN có PoP trong nước giúp giảm độ trễ
Shop online nhiều ảnh sản phẩmCaoẢnh chiếm phần lớn dung lượng trang
Trang tin tức, website hay có bài lan truyềnCaoCần chịu đột biến truy cập
Website phục vụ khách nhiều quốc giaRất caoKhông máy chủ đơn lẻ nào gần mọi khách
Website phát video, file tải về lớnRất caoLưu lượng lớn, máy chủ gốc khó kham
Ứng dụng nội bộ, trang quản trịThấpÍt người dùng, nội dung động, không nên cache

Danh sách kiểm tra trước khi bật CDN

  1. Khách của bạn ở đâu? CDN có PoP gần họ không?
  2. CDN hoạt động dạng proxy toàn bộ tên miền hay chỉ phục vụ file tĩnh qua tên miền phụ?
  3. Đã loại trừ các trang không được cache: giỏ hàng, thanh toán, tài khoản, trang quản trị?
  4. Có cách xóa cache nhanh khi cập nhật nội dung không? Plugin của website có tích hợp không?
  5. SSL giữa người xem và CDN, giữa CDN và máy chủ gốc đã được cấu hình đầy đủ chưa?
  6. Máy chủ gốc có chỉ chấp nhận kết nối từ CDN không, để tránh bị tấn công vòng?
  7. Gói CDN tính phí theo lưu lượng, theo request hay trọn gói? Có giới hạn gì ở gói miễn phí?

Bắt đầu đơn giản

Không cần cấu hình phức tạp ngay. Một lộ trình hợp lý:

  1. Tối ưu ảnh và bật cache trang trên máy chủ gốc trước.
  2. Bật CDN cho file tĩnh: ảnh, CSS, JavaScript, font.
  3. Theo dõi tỷ lệ cache HIT và tốc độ từ nhiều vùng trong vài tuần.
  4. Khi đã hiểu hệ thống, cân nhắc cache cả trang HTML cho khách chưa đăng nhập.

Nên chọn thế nào

  • Blog, website giới thiệu, khách và máy chủ cùng ở Việt Nam: chưa cần ưu tiên. Gói CDN miễn phí cho file tĩnh là điểm cộng, không phải bắt buộc.
  • Shop online, trang tin: nên dùng, ít nhất cho ảnh và file tĩnh. Cấu hình kỹ để không cache trang thanh toán.
  • Máy chủ đặt ở nước ngoài nhưng khách ở Việt Nam: chọn CDN có PoP trong nước hoặc gần Việt Nam.
  • Website đa quốc gia, video, file lớn: CDN gần như là bắt buộc. Đọc kỹ cách tính phí theo lưu lượng.

CDN là kho phụ, không phải kho tổng. Kho tổng ngăn nắp thì kho phụ mới phát huy. Hãy tối ưu máy chủ gốc trước, rồi để CDN làm phần việc nó giỏi nhất.

Nguồn tham khảo