วันที่ 39 ของการเรียนรู้ MERN Stack

ผมกำลังอยู่ในวันที่ 39 ของการเดินทางเรียนรู้ MERN stack

เมื่อวานผมได้ศึกษาเรื่อง HTTP verbs อย่าง GET และ POST ส่วนวันนี้ผมเน้นไปที่การทำงานฝั่ง backend โดยได้ศึกษาเรื่องการจัดการ data streams และการทำ body parsing ของเซิร์ฟเวอร์

เมื่อผู้ใช้ส่งฟอร์มหรือไฟล์ เซิร์ฟเวอร์จะไม่ได้รับข้อมูลทั้งหมดในคราวเดียว แต่ข้อมูลจะถูกส่งมาเป็นชิ้นเล็กๆ ซึ่งเราเรียกชิ้นส่วนเหล่านี้ว่า chunks

Node.js ใช้ streams เพื่อประหยัดหน่วยความจำ โดยจะไม่โหลดไฟล์ขนาดใหญ่ลงในหน่วยความจำของเซิร์ฟเวอร์ในทันที แต่จะจัดการข้อมูลเป็นส่วนเล็กๆ แทน

กระบวนการทำงานเป็นดังนี้:

ใน Node.js คุณจะไม่ได้รับ request body ในทันที แต่คุณต้องคอยฟัง (listen) event ของเครือข่ายที่เฉพาะเจาะจง:

คุณจะใช้ Buffer.concat เพื่อรวมชิ้นส่วนเหล่านั้นเข้าด้วยกัน จากนั้นจึงแปลงให้เป็น string

วิธีนี้ช่วยให้เซิร์ฟเวอร์ของคุณทำงานได้รวดเร็วและมีประสิทธิภาพ อีกทั้งยังช่วยป้องกันปัญหาหน่วยความจำเต็ม (memory crash) เมื่อต้องจัดการกับไฟล์ขนาดใหญ่

แหล่งที่มา: https://dev.to/ali_hamza_589ec7b3eb6688d/day-39-of-learning-mern-stack-hkp