การแยกวิเคราะห์ การเรนเดอร์ และการสตรีม JSON ขนาดใหญ่
การแยกวิเคราะห์มักไม่ใช่คอขวด แต่การเรนเดอร์และการคัดลอกคือคอขวด ปรับแต่งตามสี่ชั้น "แยกวิเคราะห์ → ไล่ → เรนเดอร์ → ขนส่ง" เพื่อไม่ให้ความพยายามสูญเปล่า
ไฟล์ JSON ขนาดหลายสิบเมกะไบต์สามารถทำให้ main thread ค้างได้ และ JSON ที่ถูกออกแบบมาอย่างจงใจก็สามารถเจาะทะลุบริการได้ หมวดนี้ครอบคลุมทั้งปริมาณงานและแนวป้องกัน
6 บทความการแยกวิเคราะห์มักไม่ใช่คอขวด แต่การเรนเดอร์และการคัดลอกคือคอขวด ปรับแต่งตามสี่ชั้น "แยกวิเคราะห์ → ไล่ → เรนเดอร์ → ขนส่ง" เพื่อไม่ให้ความพยายามสูญเปล่า
JSON.parse เองปลอดภัย อันตรายอยู่ที่สิ่งที่เกิดขึ้นหลังจากนั้น: การ deep merge การกำหนดค่าตาม path การฝังลงใน HTML ความลึกและขนาดที่ไม่จำกัด
Minify ลดขนาด JSON ดิบได้ 30-50% แต่ gzip กลืนกำไรนั้นไปเกือบหมด ตัวเลขวัดจริงจากรูปแบบข้อมูลหลากหลาย พร้อมสี่กรณีที่ minify ทำให้แย่ลง
ไฟล์ JSON ขนาด 10MB อาจกลายเป็น 30-50MB ใน V8 heap เรียนรู้ต้นทุนจริงของสตริง ออบเจ็กต์ และตัวเลข วิธีตั้ง baseline ด้วย process.memoryUsage และเมื่อใดที่การสตรีมช่วยได้
การกระตุกเริ่มเมื่อมีการสร้าง DOM node ไม่ใช่เมื่อคุณเลื่อนหน้า ครอบคลุมการเรนเดอร์แบบยุบก่อน รายการเสมือน การไฮไลต์ผลค้นหา และขอบเขต Worker พร้อมตัวชี้วัด
ไฟล์ส่งออก JSON ขนาดหลายสิบ MB มักทำให้โปรแกรมแก้ไขข้อความและเครื่องมือออนไลน์ค้าง ทั้งที่การแยกวิเคราะห์ใช้เวลาเพียงไม่กี่ร้อยมิลลิวินาที เราวัดเวลาและหน่วยความจำในแต่ละขั้นจากตัวอย่าง 45 MB จำนวน 500,000 ระเบียน ชี้ให้เห็นว่าต้นทุนจริงอยู่ที่จำนวนบรรทัดและโหนด พร้อมตารางเลือกเครื่องมือตามขนาดไฟล์: ดูออนไลน์ บรรทัดคำสั่ง การประมวลผลแบบสตรีม และแอปเดสก์ท็อป