Skip to content

Zlib Module (ซิปข้อมูล)

ทำไม zlib ถึงสำคัญ?

zlib คือเครื่องมือสำหรับบีบอัด (compress) และขยาย (decompress) ข้อมูลใน Node.js เช่น ซิปไฟล์, ลดขนาดข้อมูลก่อนส่งผ่าน network มือใหม่ควรรู้จัก zlib เพราะช่วยประหยัด bandwidth และ storage

  • ใช้ zlib ลดขนาดไฟล์ใหญ่ เช่น log, รูปภาพ, ข้อมูล backup
  • ส่งข้อมูลผ่าน network ได้เร็วขึ้น
  • รองรับรูปแบบ gzip, deflate ฯลฯ

แนะนำ zlib module

zlib เป็น built-in module สำหรับบีบอัดและขยายข้อมูลใน Node.js รองรับทั้ง synchronous และ asynchronous

ฟังก์ชันหลักที่ใช้บ่อย

zlib.gzip(input, callback)

บีบอัดข้อมูลเป็น gzip

js
// ใช้ ES Modules (ESM)
import * as zlib from "node:zlib";

const input = "Hello world!";
zlib.gzip(input, (err, buffer) => {
  if (!err) {
    console.log("บีบอัดแล้ว:", buffer);
  }
});

อธิบายทีละบรรทัด (ESM):

  1. นำเข้า zlib จาก 'node:zlib' ด้วย import (ES Modules)
  2. กำหนดข้อมูล input ที่จะบีบอัด
  3. ใช้ zlib.gzip เพื่อบีบอัดข้อมูลแบบ async (callback)
  4. ถ้าสำเร็จจะแสดง buffer ที่ถูกบีบอัด

เปรียบเทียบ CommonJS vs ESM

  • CommonJS: const zlib = require('zlib');
  • ESM: import * as zlib from 'node:zlib';

zlib.gunzip(buffer, callback)

ขยายข้อมูล gzip กลับเป็นต้นฉบับ

js
zlib.gunzip(buffer, (err, result) => {
  if (!err) {
    console.log("ขยายแล้ว:", result.toString());
  }
});

zlib.deflate / zlib.inflate

รองรับการบีบอัด/ขยายแบบอื่น (deflate)


ตัวอย่างการใช้งานจริง

  • บีบอัดไฟล์ log ก่อน backup
  • ส่งข้อมูลขนาดใหญ่ผ่าน API ให้ client
  • ขยายข้อมูลที่รับมาจาก network

อธิบายการทำงาน

  • gzip: บีบอัดข้อมูลให้เล็กลง (นิยมใช้กับไฟล์หรือ API)
  • gunzip: ขยายข้อมูลกลับเป็นต้นฉบับ
  • รองรับทั้ง callback และ stream สำหรับไฟล์ใหญ่

สรุป

zlib คือเครื่องมือสำคัญสำหรับจัดการข้อมูลขนาดใหญ่ใน Node.js ถ้าเข้าใจ zlib จะสามารถบีบอัด/ขยายข้อมูลได้อย่างมืออาชีพ

อ้างอิง