CDN Là Gì? Mạng Phân Phối Nội Dung Giải Thích Đơn Giản
CDN (mạng phân phối nội dung) là mạng lưới máy chủ trải khắp nhiều thành phố, lưu bản sao các tệp của website — hình ảnh, script, tệp kiểu dáng, đôi khi cả trang. Khi có người truy cập website của bạn, họ được phục vụ từ một địa điểm gần mình thay vì từ một máy chủ ở xa. Nhờ vậy trang tải nhanh hơn, giảm tải cho máy chủ của bạn và website chịu được những đợt truy cập tăng đột biến.
Vì sao CDN quan trọng khi bạn xây dựng bằng AI
Bạn có thể không bao giờ tự thiết lập CDN — nhiều nền tảng hosting tự đặt một CDN trước website của bạn. Nhưng bạn sẽ cảm nhận được tác động của nó:
- Tốc độ. Trang tải nhanh hơn giữ chân người truy cập và là một trong những yếu tố công cụ tìm kiếm xem xét. Xem cách làm website nhanh hơn.
- "Vì sao thay đổi của tôi chưa hiện ra?" Sau khi xuất bản một bản cập nhật, bản sao cũ có thể còn tồn tại trong một thời gian ngắn. Hiểu được điều này sẽ tiết kiệm cho bạn rất nhiều bối rối.
- Quyền riêng tư và tính đúng đắn. Nếu CDN lưu nhầm thứ — một trang chứa thông tin của một người dùng — thì người truy cập tiếp theo có thể thấy nó. Biết điều gì nên và không nên được lưu sẽ giúp bạn đặt đúng câu hỏi.
Một ví dụ đời thường
Hãy tưởng tượng một tiệm bánh bán bánh mì trên cả nước chỉ từ một cửa hàng duy nhất. Mọi khách hàng, dù ở xa đến đâu, đều phải chờ giao từ cửa hàng đó — và vào ngày đông khách, hàng chờ rất dài.
CDN giống như việc đưa cùng loại bánh mì đó đến các cửa hàng tạp hóa nhỏ khắp nước. Khách hàng mua ở gần nhà, nhanh chóng, và tiệm bánh chính chỉ cần thỉnh thoảng bổ sung hàng cho các cửa hàng nhỏ. Có một điều cần lưu ý: khi tiệm bánh đổi công thức, các cửa hàng nhỏ vẫn bán ổ bánh cũ cho đến khi được yêu cầu thay thế hoặc hàng cũ hết hạn.
CDN hoạt động như thế nào
- Nguồn gốc (origin). Website của bạn nằm trên máy chủ chính hoặc nền tảng hosting — gọi là origin.
- Điểm biên (edge). CDN chạy các máy chủ ở nhiều nơi, gọi là điểm biên hay điểm hiện diện (PoP).
- Định tuyến. Khi người truy cập yêu cầu website, DNS hoặc định tuyến mạng đưa họ đến một điểm biên gần nhất. Xem cách tên miền và DNS hoạt động.
- Trúng bộ nhớ đệm (cache hit). Nếu điểm biên đó đã có bản sao còn mới của tệp, nó gửi ngay lập tức.
- Trượt bộ nhớ đệm (cache miss). Nếu chưa có, điểm biên lấy tệp từ origin, gửi cho người truy cập và giữ một bản sao cho người tiếp theo.
- Hết hạn. Mỗi bản sao được giữ trong một khoảng thời gian nhất định, do tiêu đề cache mà máy chủ của bạn gửi quy định, hoặc cho đến khi bị xóa.
Ví dụ thực tế: một website portfolio có ảnh
Một portfolio nhiếp ảnh có trang chủ, một thư viện gồm 60 ảnh dung lượng lớn và một form liên hệ. Origin đặt ở châu Âu. Một người truy cập ở Singapore mở thư viện ảnh.
- Không có CDN: mỗi ảnh phải đi từ châu Âu. Mỗi yêu cầu mất một hành trình vòng quanh thế giới, nên thư viện tải rất chậm.
- Có CDN: người truy cập đầu tiên gần Singapore khiến điểm biên ở đó lấy và lưu các ảnh. Mọi người truy cập sau trong khu vực đó nhận ảnh từ điểm gần hơn, nhanh hơn nhiều.
Giờ nhiếp ảnh gia thay ảnh nền ở trang chủ và xuất bản lại. Điều quyết định người truy cập có thấy ảnh mới hay không là:
/index.html → thời gian cache ngắn, được kiểm tra thường xuyên
/assets/index-3f9a2c.js → được cache lâu
/assets/hero-8b41d0.jpg → được cache lâu
Các công cụ build hiện đại, bao gồm Vite, đặt cho tệp một tên có mã băm như hero-8b41d0.jpg. Khi tệp thay đổi, tên của nó cũng thay đổi, nên trang yêu cầu một tệp hoàn toàn mới mà chưa bộ nhớ đệm nào từng thấy. Bản thân trang HTML chỉ được cache trong thời gian ngắn, nên nó sớm trỏ người truy cập tới các tệp mới. Đây là cách tiêu chuẩn để vừa cache lâu vừa cập nhật kịp thời.
Form liên hệ thì khác. Dữ liệu gửi đi luôn đến máy chủ; chúng không bao giờ nên được cache.
Nên cache gì và không nên cache gì
| Thường cache lâu | Thường cache ngắn | Không cache trong CDN dùng chung |
|---|---|---|
| Hình ảnh, phông chữ, video | Trang HTML của website công khai | Trang sau đăng nhập, bảng điều khiển |
| JavaScript và CSS có tên băm | Dữ liệu API công khai thỉnh thoảng thay đổi | Mọi thứ có dữ liệu cá nhân |
| Tệp tải về ít khi thay đổi | Dữ liệu form, thanh toán, mọi yêu cầu POST |
Thuật ngữ chính
| Thuật ngữ | Ý nghĩa |
|---|---|
| Origin | Máy chủ hoặc nền tảng hosting chính, nơi các tệp gốc nằm. |
| Edge / PoP | Một địa điểm của CDN phục vụ người truy cập gần đó. |
| Cache hit / miss | Điểm biên có sẵn tệp / phải lấy tệp từ origin. |
| TTL | Time to live — thời gian một bản sao được giữ lại. |
| Tiêu đề Cache-Control | Chỉ dẫn máy chủ gửi đi, cho biết một thứ có được cache hay không và trong bao lâu. |
| Purge / invalidate | Yêu cầu CDN xóa ngay các bản sao đã cache. |
| Cache busting | Đổi tên tệp hoặc URL khi tệp thay đổi, để bộ nhớ đệm lấy bản mới. |
| Latency | Độ trễ do khoảng cách và số chặng mạng gây ra. |
Để tìm hiểu về bộ nhớ đệm nói chung — trong trình duyệt, máy chủ và cơ sở dữ liệu — xem bộ nhớ đệm là gì.
Những hiểu lầm thường gặp
- "CDN làm mọi thứ nhanh hơn." CDN chỉ tăng tốc việc phân phối tệp. Truy vấn cơ sở dữ liệu chậm hay lời gọi AI chậm trên máy chủ của bạn vẫn chậm.
- "CDN thay thế hosting." CDN nằm trước hosting của bạn. Bạn vẫn cần một origin.
- "Tôi đã cập nhật website nên mọi người thấy ngay." Bản sao cũ có thể còn tồn tại một lúc trong CDN và trình duyệt. Hãy làm mới cứng để kiểm tra, và dùng tên tệp có mã băm.
- "Cache luôn an toàn." Cache một trang được cá nhân hóa trong bộ nhớ đệm dùng chung là rủi ro thật về quyền riêng tư. Nội dung riêng tư nên được đánh dấu là không cache được.
- "CDN chỉ dành cho công ty lớn." Nhiều nhà cung cấp hosting bao gồm CDN cho website nhỏ mà bạn không cần làm gì thêm.
Điều nên hỏi AI builder của bạn
- "Website này có CDN phía trước không? CDN cache những tệp nào và trong bao lâu?"
- "Hãy đảm bảo JavaScript, CSS và hình ảnh đã build có tên tệp băm và thời gian cache dài, còn HTML có thời gian cache ngắn."
- "Đừng bao giờ cache trang đăng nhập hoặc phản hồi API có dữ liệu cá nhân trong bộ nhớ đệm dùng chung."
- "Nén và thu nhỏ hình ảnh để thư viện ảnh tải nhanh."
- "Tôi đã xuất bản bản cập nhật nhưng vẫn thấy phiên bản cũ — là do bộ nhớ đệm của trình duyệt hay của CDN?"
CDN và Mythex
Khi xuất bản trên Mythex, phần giao diện tĩnh được triển khai dưới dạng trang tĩnh, và tài liệu ghi chú rằng bộ nhớ đệm CDN có thể chậm cập nhật trong thời gian ngắn sau mỗi lần xuất bản: nếu bạn vẫn thấy phiên bản cũ sau khi xuất bản lại, hãy làm mới cứng URL công khai. Không cần cấu hình gì thêm. Nếu bạn kết nối tên miền riêng mà DNS nằm trên Cloudflare, tài liệu yêu cầu đặt bản ghi ở chế độ "DNS only" thay vì proxied, để Mythex có thể cấp HTTPS đúng cách. Xem cách xuất bản và tên miền riêng trong tài liệu, và hướng dẫn của chúng tôi về web hosting.
Câu hỏi thường gặp
CDN là gì, nói đơn giản?
CDN (mạng phân phối nội dung) là mạng lưới máy chủ đặt ở nhiều địa điểm, lưu bản sao các tệp của website. Người truy cập được phục vụ từ địa điểm gần họ thay vì từ máy chủ chính, nên trang tải nhanh hơn và máy chủ chính phải làm ít việc hơn.
Vì sao sau khi cập nhật tôi vẫn thấy phiên bản cũ của website?
Thường là vì bản sao của tệp cũ đang được lưu trong bộ nhớ đệm — trong CDN, trong trình duyệt, hoặc cả hai. Làm mới cứng (hard refresh) sẽ khắc phục phía trình duyệt; bản sao trên CDN tự hết hạn hoặc có thể bị xóa. Các công cụ build tránh phần lớn vấn đề này bằng cách đặt tên mới cho tệp đã thay đổi.
Website nhỏ có cần CDN không?
Bạn thường đã có CDN mà không cần chọn, vì nhiều nền tảng hosting đặt CDN trước website một cách tự động. Nếu nền tảng của bạn không có và người truy cập trải rộng ở nhiều quốc gia, việc thêm CDN thường đáng làm.
CDN có thể lưu bộ nhớ đệm dữ liệu của ứng dụng và các trang sau khi đăng nhập không?
CDN có thể lưu bất cứ thứ gì được phép, nên phải cấu hình cẩn thận. Các tệp công khai như hình ảnh, script và kiểu dáng là lý tưởng. Nội dung cá nhân hoặc trang sau khi đăng nhập thường không nên được lưu trong CDN dùng chung, nếu không một người dùng có thể thấy dữ liệu của người khác.