Contents

    Server response 206 Partial Content

    การกำหนดรหัส 206 (Partial Content)

    รหัสสถานะ HTTP 206 (Partial Content) หมายถึง เซิร์ฟเวอร์ได้ประมวลผลคำขอของลูกค้าอย่างสำเร็จและส่งคืนเฉพาะส่วนที่ร้องขอของทรัพยากรเท่านั้น รหัสนี้ใช้ในสถานการณ์ที่ลูกค้าขอเฉพาะบางส่วนของไฟล์ ซึ่งสามารถเป็นประโยชน์ในการส่งข้อมูลแบบสตรีมมิ่งหรือการดาวน์โหลดไฟล์ขนาดใหญ่

    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 ที่ไม่ถูกต้อง
    • วิธีหลีกเลี่ยงข้อผิดพลาดในการดาวน์โหลดส่วน
    • คำแนะนำในการทดสอบและการดีบัก