Content Compression ของ http server เขียนเมื่อ 2009.10.19 โดย

ในการทำงานของ http server ที่ทำการส่ง hypertext มายัง client นั้นบางครั้งสายอักษร (String) จำนวนมากทำให้ใช้งาน bandwidth มาก และยิ่งถ้ามีช่องทางที่แคบด้วยแล้วการส่งข้อมูลก็จะช้าลงด้วย ดังนั้นใน http เวอร์ชั่น 1.1 จึงมีการประกาศการบีบอัดสายอักษรเหล่านี้ด้วย ในเอกสาร RFC 2616 โดยเป็นความสามารถที่เพิ่มเข้ามาในทั้งส่วนของ http server และ http client

การทำงานก็เหมือนการบีบอัดไฟล์ในระบบคอมพิวเตอร์ปกติ แต่จะมีอัตราการบีบอัดที่ต่ำกว่า เพื่อใช้เวลาในการบีบอัดเร็วขึ้น การบีบอัดตามมาตรฐาน http มีอยู่ 3 แบบคือ

  1. GZip (GNU Zip) มีการประกาศรูปแบบใน RFC1952 เป็นการเข้ารหัสแบบ Lempel-Ziv (LZ77) พร้อมตรวจสอบด้วย CRC ขนาด 32 บิต
  2. compress เป็นการประยุกต์ใช้งาน compress ใน UNIX ซึ่งเป็นแบบ Lempel-Zip-Welch (LZW)
  3. deflate มีการประกาศรูปแบบใน RFC1950 เป็นการเข้ารหัสด้วย zlib และผสมกับ deflate ซึ่งประกาศใน RFC1951

โดย http server ที่รองรับการบีบอัดได้แก่

  • Internet Information Service (IIS) รองรับทั้ง gzip และ deflate
  • Apache รองรับทั้ง gzip และ deflate
  • Resin รองรับ gzip
  • Lighttpd รองรับ gzip และ deflate
  • Nginx รองรับ gzip และ deflate
  • Sun Java Web Server รองรับ gzip
  • Zeus รองรับ gzip
  • Cherokee รองรับ gzip และ deflate
การใช้งานการบีบอัดนั้นช่วยในการลด Bandwidth ลงได้มาก

จากรูปเป็นการทดลองปิดการใช้งาน gzip ใน nginx เป็นเวลา 2 วันจะเห็นว่า connection ปริมาณเท่าเดิม แต่ในช่วงที่ทำการทดลองปิด gzip นั้นปริมาณ Bandwidth เพิ่มขึ้นมากหลายเท่าตัว ซึ่ง gzip นั้นช่วยลด bandwidth ลงได้หลายเท่าตัวนั่นเอง



คำเตือนคำเตือน เนื้อหาต่างๆ ในบทความ รวมถึงรูปภาพทั้งหมดในบทความนี้ เป็นความเห็นส่วนตัวของผู้เขียนแต่ละคน ซึ่งแต่ละคนได้ทำการลงทะเบียน และเขียนบทความลงใน Modoeye Articles นี้โดยไม่มีค่าธรรมเนียมใดๆ บทความเหล่านี้เป้าหมายเพื่อการศึกษา และความบันเทิงเท่านั้น การนำส่วนหนึ่งส่วนใดของบทความไปใช้งาน ควรทำการอ้างอิงถึงผู้เขียนและแหล่งที่มาด้วย