Mạng phân phối nội dung (content delivery network - CDN) là một mạng lưới máy chủ proxy phân tán toàn cầu, phục vụ nội dung từ những vị trí gần người dùng hơn. Thông thường, các file tĩnh như HTML/CSS/JS, ảnh và video được phục vụ từ CDN, dù một số CDN như CloudFront của Amazon có hỗ trợ nội dung động. Kết quả phân giải DNS của trang web sẽ cho client biết cần liên hệ máy chủ nào.
Phục vụ nội dung từ CDN có thể cải thiện hiệu năng đáng kể theo hai cách:
Người dùng nhận nội dung từ các trung tâm dữ liệu ở gần họ
Máy chủ của bạn không phải phục vụ những request mà CDN đã đáp ứng
Không có CDN, mọi request phải đi xa tới server gốc; có CDN, request được phục vụ từ điểm gần người dùng, chỉ đồng bộ với gốc khi cần.
CDN kiểu đẩy (Push CDN)
CDN kiểu đẩy nhận nội dung mới mỗi khi có thay đổi trên máy chủ của bạn. Bạn chịu toàn bộ trách nhiệm cung cấp nội dung: tải trực tiếp lên CDN và viết lại URL để trỏ tới CDN. Bạn có thể cấu hình khi nào nội dung hết hạn và khi nào được cập nhật. Nội dung chỉ được tải lên khi nó mới hoặc đã thay đổi, giúp giảm tối đa lưu lượng nhưng lại tốn tối đa dung lượng lưu trữ.
Những trang có ít lưu lượng hoặc có nội dung không thường xuyên cập nhật hợp với CDN kiểu đẩy. Nội dung được đặt lên CDN một lần, thay vì bị kéo lại theo chu kỳ.
CDN kiểu kéo (Pull CDN)
CDN kiểu kéo lấy nội dung mới từ máy chủ của bạn khi người dùng đầu tiên yêu cầu nội dung đó. Bạn để nguyên nội dung trên máy chủ của mình và viết lại URL để trỏ tới CDN. Điều này khiến request chậm hơn cho tới khi nội dung được lưu đệm trên CDN.
Thời gian sống (time-to-live - TTL) xác định nội dung được lưu đệm trong bao lâu. CDN kiểu kéo giảm tối đa dung lượng lưu trữ trên CDN, nhưng có thể tạo lưu lượng dư thừa nếu file hết hạn và bị kéo lại trước khi nó thực sự thay đổi.
Những trang có lưu lượng lớn hợp với CDN kiểu kéo, vì lưu lượng được dàn đều hơn và chỉ nội dung vừa được yêu cầu gần đây mới nằm lại trên CDN.
Push: nội dung được tải lên CDN trước khi ai yêu cầu. Pull: CDN chỉ lấy nội dung từ gốc khi có request đầu tiên, sau đó tự phục vụ bản đã cache cho tới khi hết TTL.
Nhược điểm: CDN
Chi phí CDN có thể đáng kể tùy theo lưu lượng, dù cần cân nhắc so với những chi phí phát sinh thêm nếu bạn không dùng CDN.
Nội dung có thể bị cũ nếu nó được cập nhật trước khi TTL hết hạn.
CDN đòi hỏi phải đổi URL của nội dung tĩnh để trỏ tới CDN.