Mã Trạng Thái 206 Partial Content Là Gì? Nghệ Thuật Tải Xuống

INEZA Felin-Michel

INEZA Felin-Michel

17 tháng 9 2025

Mã Trạng Thái 206 Partial Content Là Gì? Nghệ Thuật Tải Xuống

Bạn đang tải xuống một tệp lớn – một bộ phim độ phân giải cao, một bản cập nhật phần mềm hoặc một tập dữ liệu. Kết nối internet của bạn bị giật trong giây lát và quá trình tải xuống thất bại. Ngày xưa, bạn sẽ thở dài thất vọng và bắt đầu lại toàn bộ quá trình tải xuống từ đầu, mất hết mọi tiến độ.

Nhưng ngày nay, bạn nhấp vào "Tiếp tục" (Resume), và một điều kỳ diệu xảy ra. Quá trình tải xuống tiếp tục ngay tại điểm dừng trước đó. Không lãng phí thời gian, không lãng phí băng thông.

Phép màu của mạng hiện đại này được thực hiện nhờ một trong những mã trạng thái mạnh mẽ nhưng ít được nhắc đến nhất của HTTP: 206 Partial Content.

Mã trạng thái này có thể không được thảo luận phổ biến như 200 OK hay 404 Not Found, nhưng nó đóng một vai trò quan trọng trong hiệu suất web hiện đại và trải nghiệm người dùng. Thực tế, nếu không có nó, các dịch vụ phát trực tuyến yêu thích của bạn, các bản tải xuống phần mềm và các API tệp lớn sẽ trở nên kém hiệu quả một cách đáng tiếc.

Mã này là nền tảng của các bản tải xuống có thể tiếp tục, phát trực tuyến video hiệu quả và truyền tệp nhanh chóng, song song. Đó là cách giao thức chia một tài nguyên lớn thành các phần nhỏ dễ quản lý, cho phép máy khách yêu cầu chính xác những gì họ cần, không hơn không kém.

Nếu bạn từng tự hỏi làm thế nào Netflix bắt đầu phát phim ngay lập tức hoặc Chrome tải xuống tệp hiệu quả đến vậy, thì 206 là một phần quan trọng của câu trả lời.

Trong bài đăng blog này, chúng ta sẽ khám phá mã trạng thái 206, giải thích cách nó hoạt động, chia sẻ các trường hợp sử dụng thực tế và thảo luận về các phương pháp hay nhất khi làm việc với nó. Nếu bạn muốn tăng cường kiểm thử và tài liệu API của mình, đừng quên tải xuống Apidog miễn phí. Đây là một công cụ mạnh mẽ giúp bạn kiểm thử và hiểu các phản hồi như 206 Partial Content, giúp quản lý API của bạn mượt mà và minh bạch hơn.

nút

Bây giờ, hãy cùng khám phá cách HTTP 206 Partial Content biến các bản tải xuống nguyên khối thành một trải nghiệm hiệu quả, hiện đại và cách bạn có thể sử dụng nó một cách hiệu quả trong các API, bản tải xuống và ứng dụng.

Vấn đề: Tải xuống nguyên khối

Để hiểu tại sao 206 lại quan trọng đến vậy, trước tiên chúng ta phải đánh giá cao vấn đề mà nó giải quyết.

Cách tải xuống tệp truyền thống, đơn giản sử dụng một yêu cầu GET và phản hồi 200 OK:

  1. Máy khách: GET /big-video.mp4
  2. Máy chủ: 200 OK + toàn bộ tệp video 2GB
  3. Máy khách: Chờ toàn bộ tệp tải xuống trước khi có thể sử dụng.

Cách tiếp cận này có một số nhược điểm nghiêm trọng:

Mã trạng thái 206 Partial Content, được sử dụng với một tập hợp các tiêu đề HTTP cụ thể, giải quyết tất cả các vấn đề này bằng cách cho phép yêu cầu theo phạm vi (range requests).

HTTP 206 Partial Content thực sự có nghĩa là gì?

Mã trạng thái 206 Partial Content thuộc danh mục thành công 2xx. Nhưng không giống như 200 OK, vốn cho biết một phản hồi thành công đầy đủ, 206 đặc biệt có nghĩa là:

Máy chủ đang trả về thành công chỉ một phần của tài nguyên được yêu cầu.

Điều này xảy ra khi máy khách (như trình duyệt, trình phát media hoặc trình tải xuống) thực hiện một yêu cầu một phần (partial request) bằng cách sử dụng tiêu đề Range.

Ví dụ, nếu một tệp video 100 MB được lưu trữ trên máy chủ, máy khách có thể chỉ yêu cầu 10 MB đầu tiên để bắt đầu phát ngay lập tức. Máy chủ phản hồi với 206 Partial Content và cung cấp chính xác những gì đã được yêu cầu.

Nói một cách đơn giản, đó là máy chủ nói: "Được rồi, bạn không muốn toàn bộ. Đây là phần bạn đã yêu cầu."

Một phản hồi 206 điển hình trông như thế này:

HTTP/1.1 206 Partial ContentContent-Type: video/mp4Content-Range: bytes 1000-1999/5000Content-Length: 1000

[...1000 bytes of video data...]

Hãy cùng phân tích tiêu đề mới quan trọng này:

Nói một cách đơn giản, mã trạng thái HTTP 206 Partial Content cho biết máy chủ đang thực hiện thành công yêu cầu của máy khách về chỉ một phần của tài nguyên, thay vì toàn bộ. Điều này khác với mã trạng thái 200 OK quen thuộc hơn, vốn trả về toàn bộ nội dung.

Việc phân phối một phần này rất cần thiết khi xử lý các tệp lớn, phát trực tuyến media hoặc các yêu cầu muốn tiếp tục tải xuống bị gián đoạn mà không cần bắt đầu lại.

Tại sao chúng ta cần Partial Content?

Hãy đối mặt với sự thật: không phải mọi máy khách đều cần toàn bộ tệp cùng một lúc. Phát trực tuyến, tải xuống hoặc tiếp tục các lần truyền bị gián đoạn sẽ kém hiệu quả hơn nhiều nếu không có các yêu cầu một phần.

Đây là lý do tại sao chúng ta cần 206:

Tóm lại, 206 làm cho web hiện đại nhanh chóng, hiệu quả và thân thiện với người dùng.

Tại sao 206 Partial Content lại quan trọng?

Mã trạng thái 206 mạnh mẽ vì nó cho phép:

Nếu không có 206 Partial Content, người dùng sẽ phải đối mặt với trải nghiệm tải xuống và phát trực tuyến chậm hơn, dễ bị gián đoạn hơn.

Các trường hợp sử dụng chính của 206 Partial Content

Đây là những nơi 206 phát huy tác dụng:

206 Partial Content hoạt động như thế nào?

Để hiểu cách 206 Partial Content hoạt động, bạn cần biết về tiêu đề HTTP Range. Khi máy khách muốn yêu cầu chỉ một phân đoạn hoặc phạm vi cụ thể của một tài nguyên, nó sẽ gửi một yêu cầu HTTP với tiêu đề Range chỉ định (các) byte mong muốn.

Ví dụ:

textRange: bytes=0-999

Điều này có nghĩa là, “Hãy cung cấp cho tôi 1000 byte đầu tiên của tài nguyên.”

Nếu máy chủ hỗ trợ chức năng này, nó sẽ phản hồi bằng mã trạng thái 206 Partial Content, cùng với tiêu đề Content-Range chỉ định các byte đang được trả về:

textContent-Range: bytes 0-999/5000

Điều này cho máy khách biết máy chủ đang gửi các byte từ 0 đến 999 trong tổng số 5000 byte.

Chìa khóa kỳ diệu: Tiêu đề Range

Phản hồi 206 không tự xảy ra. Nó luôn là câu trả lời cho yêu cầu của máy khách có chứa tiêu đề Range.

Máy khách sử dụng tiêu đề Range để chỉ định phần (các phần) của tệp mà nó muốn.

Ví dụ 1: Yêu cầu một đoạn cụ thể

GET /big-video.mp4 HTTP/1.1Host: example.comRange: bytes=1000-1999

Yêu cầu này nói, "Vui lòng gửi cho tôi chỉ các byte từ 1000 đến 1999 (bao gồm) của tệp."

Ví dụ 2: Tiếp tục tải xuống (Nút "Resume")

Giả sử một bản tải xuống 5000 byte bị lỗi sau khi 2000 byte đã được nhận. Máy khách có thể tiếp tục bằng cách yêu cầu phần còn lại:

GET /big-video.mp4 HTTP/1.1Host: example.comRange: bytes=2000-

Yêu cầu này nói, "Vui lòng gửi cho tôi mọi thứ từ byte 2000 đến cuối tệp."

Ví dụ 3: Lấy phần cuối của tệp

Một số định dạng tệp (như MP4) có siêu dữ liệu ở cuối. Trình phát video có thể yêu cầu phần cuối trước để xác định thời lượng và codec của video.

GET /big-video.mp4 HTTP/1.1Host: example.comRange: bytes=-500

Yêu cầu này nói, "Vui lòng gửi cho tôi 500 byte cuối cùng của tệp."

Cách điều này cho phép các tính năng hiện đại

1. Tải xuống có thể tiếp tục

Đây là ứng dụng đơn giản nhất. Máy khách theo dõi số byte đã nhận thành công. Nếu kết nối bị ngắt, nó chỉ cần gửi một yêu cầu mới với Range: bytes=<received_so_far>- và tiếp tục liền mạch từ điểm dừng trước đó.

2. Phát trực tuyến video và âm thanh

Đây là nơi 206 thực sự tỏa sáng. Khi bạn nhấn phát một video:

  1. Trình phát không chờ toàn bộ tệp tải xuống.
  2. Nó ngay lập tức yêu cầu vài giây đầu tiên của video (Range: bytes=0-1000000).
  3. Khi bạn xem, nó liên tục yêu cầu các đoạn tiếp theo trong nền.
  4. Nếu bạn tua nhanh đến giữa video, trình phát sẽ tính toán phạm vi byte tương ứng và yêu cầu trực tiếp (Range: bytes=25000000-26000000). Đây là lý do tại sao bạn có thể nhảy đến cuối video YouTube gần như ngay lập tức—bạn không chờ toàn bộ tệp tải, mà chỉ là đoạn cụ thể bạn đã yêu cầu.

3. Tải xuống song song (Tải xuống đa luồng)

Các trình quản lý tải xuống và trình duyệt hiện đại sử dụng điều này để tăng tốc độ tải xuống. Chúng mở nhiều kết nối đến cùng một tệp và yêu cầu các phạm vi khác nhau đồng thời.

Connection 1: Range: bytes=0-999999

Connection 2: Range: bytes=1000000-1999999

Connection 3: Range: bytes=2000000-2999999

Connection 4: Range: bytes=3000000-

Khi tất cả các đoạn được tải xuống, máy khách sẽ ghép chúng lại thành tệp hoàn chỉnh. Điều này có thể giảm đáng kể tổng thời gian tải xuống.

Nhiệm vụ của máy chủ: Hỗ trợ và Tiêu đề

Để điều này hoạt động, máy chủ phải thông báo rằng nó hỗ trợ các yêu cầu theo phạm vi. Nó thực hiện điều này bằng cách bao gồm tiêu đề Accept-Ranges trong các phản hồi của nó đối với các yêu cầu GET thông thường.

HTTP/1.1 200 OKAccept-Ranges: bytesContent-Length: 5000
...

Điều này cho máy khách biết, "Tôi hiểu tiêu đề Range, và tôi có thể phục vụ bạn các phần của tệp này theo đơn vị byte."

Nếu máy chủ không hỗ trợ các phạm vi, nó sẽ bỏ qua tiêu đề Range và trả về toàn bộ tệp với trạng thái 200 OK.

Cách triển khai và kiểm thử 206 Partial Content

Đối với các nhà phát triển, việc bật phân phối nội dung một phần có nghĩa là đảm bảo máy chủ của bạn hỗ trợ tiêu đề Range và xử lý nó đúng cách. Hầu hết các máy chủ web hiện đại như Apache, Nginx và IIS đều hỗ trợ điều này theo mặc định.

Nếu bạn đang xây dựng một API hoặc hệ thống phân phối nội dung, bạn nên:

Để kiểm thử cách API hoặc máy chủ của bạn xử lý các phản hồi 206, Apidog là một công cụ tuyệt vời. Bạn có thể mô phỏng các yêu cầu với tiêu đề Range và kiểm tra cách máy chủ phản hồi, đảm bảo các yêu cầu nội dung một phần hoạt động như mong đợi. Tải xuống Apidog miễn phí ngay hôm nay để bắt đầu!

Cách máy khách nên xử lý các phản hồi 206

Khi nhận được phản hồi 206 Partial Content, máy khách nên:

Các triển khai máy khách tốt cải thiện độ bền tải xuống và chất lượng phát trực tuyến.

Cách trình duyệt xử lý 206

Các trình duyệt hiện đại:

Đây là lý do tại sao bạn có thể tua nhanh video YouTube hoặc tiếp tục tải xuống bị lỗi mà không gặp vấn đề gì.

Ví dụ thực tế: Phát trực tuyến video

Hãy tưởng tượng bạn đang xem một video trực tuyến. Trình phát không tải xuống toàn bộ tệp cùng một lúc; thay vào đó, nó yêu cầu các phần theo từng đoạn. Mỗi yêu cầu đoạn bao gồm một tiêu đề Range chỉ định phạm vi byte mà nó muốn. Máy chủ trả lời bằng 206 Partial Content và phân đoạn tương ứng.

Khi bạn tìm kiếm các điểm khác nhau trong video, các yêu cầu Range mới sẽ lấy các phân đoạn byte khác nhau. Tương tác này cho phép phát lại video mượt mà, liên tục mà không có thời gian đệm dài.

Kiểm thử yêu cầu Range với Apidog

Kiểm thử các phản hồi 206 thủ công có thể phức tạp. Bạn cần tạo các yêu cầu với tiêu đề Range cụ thể và diễn giải các tiêu đề Content-Range thu được. Đây là lúc Apidog trở thành một công cụ không thể thiếu.

Với Apidog, bạn có thể:

  1. Tạo yêu cầu chính xác: Dễ dàng thêm tiêu đề Range vào bất kỳ yêu cầu GET nào với phạm vi byte chính xác mà bạn muốn kiểm thử.
  2. Kiểm tra phản hồi: Apidog sẽ hiển thị rõ ràng trạng thái 206 Partial Content, tiêu đề Content-Range và nội dung thực tế (thường là nhị phân) của phản hồi. Bạn có thể xác minh độ dài của phần thân phản hồi khớp với phạm vi bạn đã yêu cầu.
  3. Kiểm thử hỗ trợ máy chủ: Gửi một yêu cầu GET thông thường và kiểm tra tiêu đề Accept-Ranges trong phản hồi để xem máy chủ có hỗ trợ tính năng này hay không.
  4. Mô phỏng tiếp tục tải xuống: Tạo một chuỗi yêu cầu trong đó yêu cầu thứ hai sử dụng tiêu đề Range để mô phỏng một bản tải xuống đã tiếp tục.
nút

Mức độ kiểm soát và khả năng hiển thị này rất quan trọng đối với các nhà phát triển làm việc trên các ứng dụng xử lý truyền tệp lớn. Không giống như Swagger hay Postman, Apidog không chỉ về các yêu cầu và phản hồi mà còn về thiết kế và tài liệu quy trình làm việc. Đối với 206, điều đó tạo ra sự khác biệt lớn.

Lợi ích của việc sử dụng 206 đúng cách

Những cạm bẫy tiềm ẩn và các phương pháp hay nhất

206 so với: 204, 205 và 304

Mỗi mã có vị trí riêng của nó nhưng 206 hoàn toàn về việc phân phối một phần.

206 Partial Content đóng vai trò như thế nào trong các API RESTful

Trong thiết kế API RESTful, 206 có thể có giá trị để xử lý các bản tải xuống tài nguyên lớn hoặc xuất dữ liệu theo khối. Ví dụ, một điểm cuối API cung cấp các tệp CSV hoặc JSON lớn có thể chấp nhận các yêu cầu Range, cho phép máy khách lấy dữ liệu từng phần.

Kết luận: Tại sao bạn nên quan tâm đến 206 Partial Content

Mã trạng thái HTTP 206 Partial Content là một kiệt tác của thiết kế giao thức. Đó là một giải pháp đơn giản, thanh lịch mở ra một thế giới cải tiến về hiệu suất và trải nghiệm người dùng. Nó biến bản chất cứng nhắc, tất cả hoặc không có gì của HTTP ban đầu thành một hệ thống linh hoạt, hiệu quả và có khả năng phục hồi để truyền dữ liệu.

Mã trạng thái 206 Partial Content là một trong những công cụ mạnh mẽ nhất trong HTTP. Nó cho phép phát trực tuyến, tải xuống có thể tiếp tục, tối ưu hóa băng thông và trải nghiệm người dùng mượt mà hơn. Mã trạng thái HTTP 206 Partial Content là nền tảng của việc truyền dữ liệu hiệu quả trên web. Từ phát trực tuyến media đến tiếp tục tải xuống và truyền dữ liệu lớn, 206 cho phép giao tiếp thông minh, linh hoạt giữa máy khách và máy chủ.

Mặc dù nó không đơn giản như 200 OK, việc học cách sử dụng và triển khai 206 đúng cách có thể làm cho các API và ứng dụng của bạn mạnh mẽ hơn nhiều. Từ nút "Tiếp tục" giúp bạn tiết kiệm sự kiên nhẫn đến việc tua nhanh tức thì trong video phát trực tuyến làm bạn thích thú, 206 đang hoạt động đằng sau hậu trường, làm cho web hiện đại cảm thấy nhanh chóng và phản hồi tốt.

Nếu bạn đang phát triển hoặc sử dụng API, việc nắm vững cách 206 hoạt động và kiểm thử các điểm cuối của bạn trong các điều kiện này là điều cần thiết. Mặc dù hầu hết các nhà phát triển sẽ không bao giờ tự tạo thủ công tiêu đề Range trong công việc hàng ngày của họ, nhưng việc hiểu cách nó hoạt động là nền tảng để xây dựng các ứng dụng mạnh mẽ xử lý dữ liệu lớn một cách hiệu quả. Đó là lý do tại sao tải xuống Apidog miễn phí là một bước đi thông minh. Apidog cung cấp cho bạn một cách thực hành để kiểm thử các phản hồi nội dung một phần, đảm bảo các ứng dụng của bạn hoạt động hoàn hảo. Bạn có thể thiết kế, mô phỏng và tài liệu hóa các phản hồi một phần, giúp cuộc sống dễ dàng hơn cho các nhà phát triển, người kiểm thử và thậm chí cả các nhà quản lý sản phẩm.

Vì vậy, lần tới khi bạn tua nhanh video hoặc tiếp tục một bản tải xuống bị lỗi, hãy nhớ: đó là 206 Partial Content đang hoạt động đằng sau hậu trường.

nút

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API