Microsoft เพิ่ม API ใหม่สำหรับตรวจจับปัญหาความหน่วงระหว่าง window, iframe และ worker เพื่อเร่งความเร็วเว็บแอปที่มีโครงสร้างซับซ้อน
Microsoft แนะนำ Delayed Message Timing API ฟีเจอร์ใหม่ในกระบวนการพัฒนา Microsoft Edge ซึ่งถูกเสนอให้กับนักพัฒนาเพื่อใช้วิเคราะห์ความล่าช้าในการสื่อสารระหว่างคอนเทกซ์ของเว็บแอป เช่น main window, iframes และ worker threads โดยเฉพาะเว็บแอปที่ซับซ้อนและมีการแลกเปลี่ยนข้อมูลจำนวนมากผ่าน postMessage()
API ใหม่นี้มีเป้าหมายเพื่อตรวจจับว่าความล่าช้าเกิดจากส่วนใดของขั้นตอนการส่งข้อความ ไม่ว่าจะเป็นการค้างในคิว ปริมาณงานสคริปต์ที่ถูกประมวลผลอยู่ หรือการแปลงข้อมูล (serialize–deserialize) ที่กินเวลา ทำให้นักพัฒนาปรับสถาปัตยกรรมเว็บแอปให้ตอบสนองได้ดีขึ้น
ปัญหาความล่าช้าที่ Delayed Message Timing API ช่วยตรวจสอบ
- คอนเทกซ์ปลายทางกำลังทำงานหนักจนข้อความต้องรอในคิว หาก thread ปลายทางกำลังประมวลผลงาน synchronous ยาว ข้อความใหม่จะรอในคิวก่อนเริ่มประมวลผล ค่า blockedDuration จะแสดงระยะเวลาที่ข้อความค้างอยู่จริง
- Task Queue มีงานจำนวนมากจนเกิดการสะสม แม้งานแต่ละอย่างจะสั้น แต่จำนวนมากสามารถทำให้คิวหนาแน่นได้ เช่น UI events, rendering tasks หรือข้อความจำนวนมากใน worker API จึงแสดงค่า taskCount และ scriptTaskCount เพื่อบอกจำนวนงานที่รออยู่ในคิว
- เวลาในการ Serialize และ Deserialize ข้อมูล การส่งข้อมูลขนาดใหญ่ทำให้ทั้งฝั่งส่งและฝั่งรับต้องแปลงข้อมูลก่อนและหลัง ซึ่งกินเวลาแบบ synchronous API ให้ค่าที่ดูได้ผ่าน serialization และ deserialization ว่าความล่าช้าอยู่ในขั้นตอนนี้หรือไม่
รองรับหลายคอนเทกซ์และใช้งานร่วมกับ PerformanceObserver
API รองรับการใช้งานกับ window, iframe, worker, message channel และ broadcast channel โดยจะสร้าง PerformanceEntry สำหรับเหตุการณ์การส่งข้อความแต่ละครั้ง นักพัฒนาสามารถใช้ PerformanceObserver เพื่อดูเวลาที่ข้อความถูกส่ง เวลาที่เริ่มประมวลผล เวลาที่ค้างในคิว และข้อมูลของสคริปต์ที่เกี่ยวข้องทั้งฝั่งส่งและฝั่งรับ
ข้อมูลเหล่านี้ช่วยให้แยกสาเหตุความล่าช้าได้อย่างละเอียด ทำให้การปรับปรุงประสิทธิภาพเว็บแอปที่ต้องประมวลผลหนักหรือมีโครงสร้างหลายคอนเทกซ์ทำได้แม่นยำมากขึ้น
เนื่องจาก Delayed Message Timing API ยังอยู่ในสถานะข้อเสนอ (proposal) Microsoft จึงเปิดรับความคิดเห็นจากนักพัฒนาเพื่อช่วยปรับปรุงให้ครอบคลุมกรณีใช้งานจริงมากที่สุด ผู้ที่สนใจสามารถดูรายละเอียดและแสดงความคิดเห็นผ่าน GitHub ของ MSEdgeExplainers
ที่มา: Microsoft
Leave a Reply