ปัญหาการเติมข้อมูลฝั่งไคลเอนต์ทั้งหมด
วัดต้นทุนของการเติมข้อมูลฝั่งไคลเอนต์ให้ SPA ของรีแอ็กต์ทั้งชุด และทำความเข้าใจว่าเหตุใดหน้าแบบคงที่จึงไม่จำเป็นต้องทำเช่นนั้น
ปัญหาการเติมข้อมูลฝั่งไคลเอนต์ทั้งหมด เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
การทำให้หน้าโต้ตอบได้คืออะไร
การทำให้หน้าโต้ตอบได้คือกระบวนการที่ React นำ HTML ซึ่งสร้างจากเซิร์ฟเวอร์มาเชื่อมกับตัวรับฟังเหตุการณ์ของ JavaScript เซิร์ฟเวอร์จะส่ง HTML เริ่มต้นที่รวดเร็ว จากนั้นเบราว์เซอร์จะดาวน์โหลดชุด JavaScript และ React จะ "ทำให้" HTML แบบคงที่โต้ตอบได้ จนกว่ากระบวนการนี้จะเสร็จสิ้น หน้าเว็บจะดูเหมือนโต้ตอบได้ แต่ยังไม่สามารถโต้ตอบได้จริง
ต้นทุนการทำให้โต้ตอบได้ของแอปพลิเคชันหน้าเดียวแบบดั้งเดิม
แอปพลิเคชันหน้าเดียวแบบดั้งเดิม (SPA) จะส่งชุด JavaScript ทั้งหมดไปยังเบราว์เซอร์ React ต้องดาวน์โหลด แยกวิเคราะห์ เรียกใช้ชุดดังกล่าว แล้วเชื่อมตัวรับฟังเหตุการณ์เข้ากับทุกองค์ประกอบในโครงสร้าง สำหรับแอปพลิเคชันขนาดใหญ่ กระบวนการนี้อาจใช้เวลาหลายวินาทีบนอุปกรณ์มือถือระดับกลาง
เวลาจนพร้อมให้โต้ตอบ (TTI)
เวลาจนพร้อมให้โต้ตอบใช้วัดระยะเวลาก่อนที่ผู้ใช้จะโต้ตอบกับหน้าได้ การทำให้หน้าโต้ตอบได้ขัดขวาง TTI โดยตรง หน้าอาจดูพร้อมใช้งานเนื่องจากมองเห็น HTML ที่สร้างจากเซิร์ฟเวอร์แล้ว แต่ปุ่มและฟอร์มจะไม่ตอบสนองจนกว่า React จะเชื่อมตัวรับฟังเหตุการณ์เสร็จ ค่า TTI ที่สูงทำให้ประสบการณ์ผู้ใช้ไม่ดี
ความย้อนแย้งของเนื้อหาแบบคงที่
ลองพิจารณาหน้าโฆษณาหนึ่งหน้า: เนื้อหา 80% เป็นข้อความ รูปภาพ และส่วนหัวแบบคงที่ที่ไม่เคยเปลี่ยนแปลง มีเพียง 20% ที่เกี่ยวข้องกับส่วนประกอบแบบโต้ตอบ เช่น ฟอร์มจดหมายข่าวหรือเครื่องเล่นวิดีโอ แต่การทำให้หน้าโต้ตอบได้ของแอปพลิเคชันหน้าเดียวแบบดั้งเดิมยังคงทำงานกับทั้งหน้า 100% และประมวลผลองค์ประกอบแบบคงที่โดยไม่จำเป็น
การวัดต้นทุนการทำให้หน้าโต้ตอบได้
การวิเคราะห์ประสิทธิภาพด้วย Chrome DevTools แสดงให้เห็นต้นทุนของการทำให้หน้าโต้ตอบได้ ในแผนภาพลำดับเวลาของเธรดหลัก คุณสามารถระบุงาน "การทำให้หน้าโต้ตอบได้ของ React" ได้จากบล็อกการทำงานของ JavaScript ที่ยาวหลังการวาดครั้งแรก ยิ่งบล็อกนี้ยาวเท่าใด เธรดหลักก็ยิ่งถูกใช้งานมากขึ้น และหน้าก็จะตอบสนองได้น้อยลง
ขนาดโครงสร้างองค์ประกอบมีความสำคัญ
ยิ่งโครงสร้างองค์ประกอบของ React มีขนาดใหญ่ การทำให้หน้าโต้ตอบได้ก็ยิ่งต้องใช้การทำงานมากขึ้น React ต้องเยี่ยมชมทุกองค์ประกอบ เปรียบเทียบ HTML ที่สร้างจากเซิร์ฟเวอร์กับสิ่งที่องค์ประกอบนั้นจะสร้างขึ้น และเชื่อมตัวรับฟังเหตุการณ์ โครงสร้างหน้าที่ซับซ้อนซึ่งมีองค์ประกอบหลายร้อยรายการอาจมีต้นทุนส่วนเกินจากการทำให้หน้าโต้ตอบได้ที่วัดผลได้ แม้ใช้อุปกรณ์ที่ทำงานเร็ว
การทำให้หน้าโต้ตอบได้พร้อมกันใน React 18
React 18 เปิดตัวการทำให้หน้าโต้ตอบได้พร้อมกัน ซึ่งทำให้ React แบ่งกระบวนการออกเป็นส่วนย่อยและคืนการควบคุมให้เบราว์เซอร์ระหว่างแต่ละส่วนได้ วิธีนี้ป้องกันไม่ให้เบราว์เซอร์ดูเหมือนหยุดนิ่งไปโดยสิ้นเชิงระหว่างการทำให้โครงสร้างขนาดใหญ่โต้ตอบได้ อย่างไรก็ตาม การทำให้หน้าโต้ตอบได้พร้อมกันช่วยลดผลกระทบ แต่ไม่ได้กำจัดต้นทุนพื้นฐานนี้
การทำให้โต้ตอบได้เฉพาะส่วนใน React 18
การทำให้โต้ตอบได้เฉพาะส่วน (ผ่าน Suspense) ทำให้ React ทำให้องค์ประกอบต่าง ๆ โต้ตอบได้ตามลำดับความสำคัญ การโต้ตอบของผู้ใช้จะเรียกใช้การทำให้โต้ตอบได้ขององค์ประกอบที่เกี่ยวข้องทันที วิธีนี้ช่วยเพิ่มการตอบสนอง แต่ยังคงทำงานอยู่ภายในโครงสร้าง React เดียวกัน องค์ประกอบทั้งหมดในโครงสร้างจะถูกทำให้โต้ตอบได้ในท้ายที่สุด
ข้อค้นพบสำคัญ
ข้อค้นพบพื้นฐานที่ขับเคลื่อนสถาปัตยกรรมเกาะคือ เนื้อหาส่วนใหญ่ของหน้าทั่วไปไม่จำเป็นต้องใช้ JavaScript เลย แถบนำทาง ส่วนเด่นของหน้า ลิงก์ส่วนท้าย ข้อความบทความในบล็อก และคำอธิบายผลิตภัณฑ์ล้วนเป็นการนำเสนอเท่านั้น การบังคับให้ส่วนเหล่านี้โต้ตอบได้จึงเป็นการสิ้นเปลืองโดยนิยาม
ผลกระทบในโลกจริง
การศึกษาจากทีมประสิทธิภาพเว็บแสดงให้เห็นว่าเวลาในการแยกวิเคราะห์และเรียกใช้ JavaScript เป็นต้นทุนหลักบนอุปกรณ์มือถือ ชุด JavaScript ขนาด 300kb ใช้เวลา 2-3 วินาทีในการแยกวิเคราะห์บนโทรศัพท์ Android ระดับค่ามัธยฐาน การลด JavaScript ที่ส่งไปยังเบราว์เซอร์ให้ประโยชน์ด้านประสิทธิภาพอย่างมาก เมื่อเทียบกับการปรับปรุงใด ๆ ภายใน React
ต้นทุนการทำให้หน้าโต้ตอบได้
ทุกกิโลไบต์ของ JavaScript ที่เพิ่มเข้าไปในแอปพลิเคชัน React จะเพิ่มงานที่ต้องใช้ในการทำให้หน้าโต้ตอบได้ แม้องค์ประกอบจะมีไว้เพื่อการตกแต่งเท่านั้น หากอยู่ในโครงสร้าง React ก็ต้องเข้าร่วมกระบวนการทำให้หน้าโต้ตอบได้ ต้นทุนนี้เพิ่มขึ้นตามขนาดของแอปพลิเคชัน และทำให้การรักษาค่า TTI ที่ดีทำได้ยากขึ้นเรื่อย ๆ เมื่อแอปพลิเคชันเติบโต
ความสัมพันธ์ระหว่าง TTI กับการทำให้หน้าโต้ตอบได้
การทำให้หน้าโต้ตอบได้ของ React มีความสัมพันธ์กับเวลาจนพร้อมให้โต้ตอบ (TTI) อย่างไร
สรุปบทเรียน
การทำให้หน้าโต้ตอบได้แบบดั้งเดิมของ React ประมวลผลโครงสร้างองค์ประกอบทั้งหมด แม้แต่เนื้อหาแบบคงที่ที่ไม่ต้องใช้ JavaScript กระบวนการนี้ขัดขวางเวลาจนพร้อมให้โต้ตอบและขยายได้ไม่ดีเมื่อแอปพลิเคชันมีขนาดใหญ่ขึ้น การปรับปรุงด้านการทำให้หน้าโต้ตอบได้พร้อมกันและเฉพาะส่วนใน React 18 ช่วยลดผลกระทบ แต่ไม่ได้กำจัดต้นทุนพื้นฐาน ข้อค้นพบสำคัญคือ เนื้อหาส่วนใหญ่ของหน้าไม่จำเป็นต้องใช้ JavaScript ทำให้การทำให้ทั้งหน้าโต้ตอบได้เป็นการสิ้นเปลือง
คำถามที่พบบ่อย
บทเรียน “ปัญหาการเติมข้อมูลฝั่งไคลเอนต์ทั้งหมด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ปัญหาการเติมข้อมูลฝั่งไคลเอนต์ทั้งหมด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ปัญหาการเติมข้อมูลฝั่งไคลเอนต์ทั้งหมด”
วัดต้นทุนของการเติมข้อมูลฝั่งไคลเอนต์ให้ SPA ของรีแอ็กต์ทั้งชุด และทำความเข้าใจว่าเหตุใดหน้าแบบคงที่จึงไม่จำเป็นต้องทำเช่นนั้น คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ปัญหาการเติมข้อมูลฝั่งไคลเอนต์ทั้งหมด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ปัญหาการเติมข้อมูลฝั่งไคลเอนต์ทั้งหมด
- สถาปัตยกรรมแบบเกาะ: การเติมข้อมูลแบบเลือกเฉพาะ
- การตั้งค่าเกาะของแอสโทรและรีแอ็กต์
- การวัดประสิทธิภาพ: Lighthouse และ Core Web Vitals