Server response 206 Partial Content
การกำหนดรหัส 206 (Partial Content)
รหัสสถานะ HTTP 206 (Partial Content) หมายถึง เซิร์ฟเวอร์ได้ประมวลผลคำขอของลูกค้าอย่างสำเร็จและส่งคืนเฉพาะส่วนที่ร้องขอของทรัพยากรเท่านั้น รหัสนี้ใช้ในสถานการณ์ที่ลูกค้าขอเฉพาะบางส่วนของไฟล์ ซึ่งสามารถเป็นประโยชน์ในการส่งข้อมูลแบบสตรีมมิ่งหรือการดาวน์โหลดไฟล์ขนาดใหญ่
ตัวอย่างการใช้งานรหัสสถานะ 206
- การดาวน์โหลดไฟล์ขนาดใหญ่
- การส่งข้อมูลแบบสตรีมมิ่งสำหรับวิดีโอและเสียง
- การใช้ใน CDN (Content Delivery Network)
การดาวน์โหลดไฟล์ขนาดใหญ่
เมื่อมีการดาวน์โหลดไฟล์ขนาดใหญ่ ลูกค้าสามารถร้องขอเฉพาะบางส่วนของไฟล์ได้โดยใช้ส่วนหัว Range ตัวอย่างคำขออาจมีลักษณะดังนี้:
GET /largefile.zip HTTP/1.1
Host: example.com
Range: bytes=0-999
การส่งข้อมูลแบบสตรีมมิ่ง
ในการส่งข้อมูลแบบสตรีมมิ่ง เช่น วิดีโอหรือเสียง เซิร์ฟเวอร์สามารถส่งข้อมูลเป็นช่วง ๆ โดยการใช้รหัส 206 เพื่อระบุว่าเซิร์ฟเวอร์กำลังส่งข้อมูลเฉพาะช่วงที่ร้องขอ
การใช้ใน CDN
CDN ใช้รหัส 206 เพื่อเพิ่มประสิทธิภาพในการดาวน์โหลด โดยสามารถส่งเนื้อหาที่ถูกแบ่งออกเป็นส่วน ๆ และช่วยลดเวลาในการโหลดทรัพยากร
ตัวอย่างคำขอที่ใช้ส่วนหัว Range
คำขอ | คำตอบจากเซิร์ฟเวอร์ |
---|---|
GET /file.mp4 HTTP/1.1 Range: bytes=1000- |
HTTP/1.1 206 Partial Content Content-Range: bytes 1000-2000/5000 |
GET /file.mp4 HTTP/1.1 Range: bytes=0-499 |
HTTP/1.1 206 Partial Content Content-Range: bytes 0-499/5000 |
การจัดการรหัส 206 ในหลายภาษาโปรแกรม
PHP
ใน PHP สามารถทำการดาวน์โหลดไฟล์ส่วนได้โดยการตั้งค่าหัวข้อและประมวลผลช่วง:
header('HTTP/1.1 206 Partial Content');
header('Content-Range: bytes 0-499/1000');
readfile('file.mp4');
Python
การใช้ Flask ในการจัดการคำขอส่วน:
from flask import Flask, request, Response
app = Flask(__name__)
@app.route('/file')
def serve_file():
range_header = request.headers.get('Range', None)
# ประมวลผลช่วงที่ร้องขอ
return Response(file, status=206)
Node.js
การใช้ Express สำหรับการจัดการคำขอ:
const express = require('express');
const fs = require('fs');
const app = express();
app.get('/file', (req, res) => {
const range = req.headers.range;
// ประมวลผลช่วงที่ร้องขอ
res.writeHead(206, {'Content-Range': 'bytes 0-499/1000'});
fs.createReadStream('file.mp4', {start: 0, end: 499}).pipe(res);
});
ข้อผิดพลาดที่อาจเกิดขึ้นและการแก้ไข
- ข้อผิดพลาดจากการตั้งค่าหัวข้อ Range ที่ไม่ถูกต้อง
- วิธีหลีกเลี่ยงข้อผิดพลาดในการดาวน์โหลดส่วน
- คำแนะนำในการทดสอบและการดีบัก