แปลง Deflate เป็น GZIP
การแปลง DEFLATE ดิบเป็นสตรีม GZIP เป็นการห่อหุ้มเพย์โหลดที่บีบอัดไว้ภายในคอนเทนเนอร์มาตรฐานที่มีส่วนหัวข้อมูลเมตาเพื่อให้ระบบปฏิบัติการและเครื่องมือเว็บสามารถอ่านได้อย่างถูกต้อง
การเปรียบเทียบรูปแบบและข้อกำหนดทางเทคนิค
| ข้อกำหนด | DEFLATE | GZIP |
|---|---|---|
| ประเภท MIME | application/ | application/ |
| ประเภท | สตรีม DEFLATE ดิบ | คอนเทนเนอร์สตรีม DEFLATE |
| การบีบอัด | LZ77 + การเข้ารหัสแบบ Huffman | DEFLATE (RFC 1951) |
| ข้อกำหนดมาตรฐาน | IETF RFC 1950 / RFC 1951 | IETF RFC 1952 |
| ส่วนหัวที่ระบุลายเซ็นไฟล์ | 78 01 / 78 9C / 78 DA (zlib header bytes) | 1F 8B (gzip ID1/ID2) |
ภาพรวมรูปแบบและการใช้งาน
สตรีมข้อมูล DEFLATE ดิบประกอบด้วยไบต์ที่บีบอัดโดยไม่มีส่วนหัวของไฟล์หรือเช็คซัมท้าย เว็บเบราว์เซอร์และเครื่องมือเครือข่ายมักประสบปัญหาในการประมวลผลสตรีมเปล่าเหล่านี้ เนื่องจากขาดข้อมูลเมตา เช่น ชื่อไฟล์ต้นฉบับ ประทับเวลาการแก้ไข หรือตัวระบุระบบปฏิบัติการ การห่อหุ้มข้อมูลดิบนี้ลงในคอนเทนเนอร์ GZIP ช่วยแก้ปัญหาความเข้ากันได้เหล่านี้ นักพัฒนาพบสตรีม DEFLATE ดิบภายในโปรโตคอลเครือข่าย เช่น การบีบอัด HTTP, ส่วนของภาพ PNG และคลังข้อมูล ZIP เมื่อสตรีมเหล่านี้จำเป็นต้องบันทึกเป็นไฟล์แบบสแตนด์อโลนสำหรับเครื่องมือบรรทัดคำสั่งหรือการดาวน์โหลดเว็บมาตรฐาน วิศวกรจะแปลงเป็นรูปแบบ GZIP เพื่อให้แน่ใจว่ายูทิลิตี้การคลายการบีบอัดจะจดจำประเภทไฟล์ได้ทันทีและแยกเนื้อหาออกมาได้โดยไม่แสดงข้อผิดพลาด
ข้อกำหนดทางเทคนิคและรายละเอียดตัวแปลงสัญญาณ
Raw DEFLATE เป็นบิตสตรีมตาม RFC 1951 ที่ใช้การจับคู่ LZ77 และการเข้ารหัส Huffman โดยไม่มีส่วนหัวจัดกรอบหรือค่าลายเซ็นตายตัว MIME type application/zlib ใช้ระบุสตรีม DEFLATE ที่ห่อด้วย zlib ตาม RFC 1950 ไม่ใช่ Raw DEFLATE ส่วน GZIP (application/gzip) ห่อเพย์โหลด DEFLATE ไว้ในส่วนหัวที่ขึ้นต้นด้วยไบต์ 1F 8B และส่วนท้ายที่มีเช็คซัม CRC32 กับขนาดข้อมูลก่อนบีบอัดเมื่อหารด้วย 2^32
ความเข้ากันได้ของระบบปฏิบัติการและเบราว์เซอร์
สตรีม GZIP มีความเข้ากันได้สากลในระบบปฏิบัติการสมัยใหม่ รวมถึง Linux, macOS และ Windows เครื่องมือบรรทัดคำสั่งเช่น gzip, gunzip และ 7-Zip อ่านไฟล์ GZIP ได้อย่างเป็นธรรมชาติ เว็บเบราว์เซอร์จัดการการคลายการบีบอัด GZIP โดยอัตโนมัติเมื่อรับการตอบสนอง HTTP จากเซิร์ฟเวอร์ แม้ว่า DEFLATE ดิบมักจะต้องใช้ตรรกะตัววิเคราะห์แบบกำหนดเองภายในสภาพแวดล้อม JavaScript หรือโมดูล WebAssembly ก็ตาม
เคล็ดลับการใช้งาน
ตรวจสอบให้แน่ใจว่าเครื่องมือคลายการบีบอัดของคุณอ่านตัวพ่วง GZIP ได้อย่างถูกต้อง เนื่องจากเช็คซัม CRC32 ต่อท้ายที่เสียหายจะทำให้เครื่องมือแยกไฟล์ยุติการทำงาน แม้ว่าเพย์โหลด DEFLATE พื้นฐานจะยังสมบูรณ์ก็ตาม
คำถามที่พบบ่อย
วิธีแปลง DEFLATE ดิบเป็นสตรีม GZIP โดยไม่สูญเสียคุณภาพ?
รูปแบบทั้งสองใช้การบีบอัดแบบไม่สูญเสียข้อมูลซึ่งอ้างอิงจากอัลกอริทึม DEFLATE ตัวเดียวกัน การแปลงระหว่างกันทำได้เพียงเพิ่มส่วนหัวของคอนเทนเนอร์และเช็คซัมรอบไบต์ที่บีบอัดที่มีอยู่ ซึ่งหมายความว่าจะไม่มีการสูญเสียข้อมูลเกิดขึ้นระหว่างกระบวนการห่อหุ้ม
ความแตกต่างระหว่าง DEFLATE ดิบและสตรีม GZIP คืออะไร?
DEFLATE ดิบประกอบด้วยเฉพาะเพย์โหลดที่บีบอัดโดยไม่มีส่วนหัวหรือส่วนท้ายที่ระบุตัวตน สตรีม GZIP เป็นคอนเทนเนอร์ไฟล์มาตรฐานที่เพิ่มส่วนหัว 10 ไบต์และเช็คซัมต่อท้าย 8 ไบต์ลงในข้อมูล DEFLATE ดิบสำหรับการติดตามข้อมูลเมตาและการตรวจจับข้อผิดพลาด