- YouTube Embeds มีขนาดประมาณ 1.3MB และไม่แชร์ทรัพยากรระหว่างหลาย embed
- หากใช้เว็บคอมโพเนนต์
<lite-youtube> จะลดลงเหลือประมาณ 100k พร้อมแชร์ทรัพยากรและไม่ต้องแลกกับการสูญเสียฟีเจอร์
การฝังวิดีโอ YouTube
- สามารถฝังวิดีโอ YouTube ลงในเว็บไซต์ได้
- ในเมนู Share ของ YouTube หากเลือกตัวเลือก < > Embed จะได้รับโค้ด HTML ที่มี
<iframe> รวมอยู่ด้วย
<iframe> ไม่ค่อยดีต่อประสิทธิภาพ แต่เหมาะกับคอนเทนต์บุคคลที่สามที่มีการป้องกัน
ข้อเสนอเพื่อปรับปรุงประสิทธิภาพ
- เพิ่มแอตทริบิวต์
loading="lazy" เพื่อไม่ให้วิดีโอถูกโหลดทันทีเมื่อยังไม่ปรากฏบนหน้าจอ
- เพิ่ม inline style เพื่อรักษาสัดส่วนดั้งเดิมของวิดีโอและทำให้ปรับขนาดได้อย่างยืดหยุ่น
ปัญหาของ YouTube Embed ในปัจจุบัน
- หน้าเว็บที่มี YouTube Embed เพียงรายการเดียวต้องใช้ 32 requests, ส่งข้อมูล 1.3MB และใช้เวลาโหลด 2.76 วินาที
- ไม่มีการแชร์ทรัพยากรระหว่างหลาย embed ทำให้ปริมาณการส่งข้อมูลเพิ่มขึ้นแบบเส้นตรงตามจำนวน embed
รูปลักษณ์และการทำงาน
- YouTube Embed แสดงภาพ "poster" ของวิดีโอ ชื่อวิดีโอ และปุ่มเล่นขนาดใหญ่
- ฟีเจอร์เหล่านี้สามารถทำได้โดยไม่ต้องใช้ทรัพยากรมาก
ทำไมถึงเป็นแบบนี้?
- มีรายงานว่าเคยทดสอบ embed แบบเบาแล้วพบว่าการมีส่วนร่วมลดลง
- แต่ผลลัพธ์นี้ขัดกับสัญชาตญาณ จึงควรตรวจสอบเชิงลึกเพิ่มเติม
- การใช้ทรัพยากรมหาศาลยังเป็นปัญหาในด้านสิ่งแวดล้อมด้วย
วิธีแก้: จำลองประสบการณ์ embed ด้วยวิธีอื่น
- มีเว็บคอมโพเนนต์
lite-youtube-embed ที่สร้างโดย Paul Irish จาก Google
- คอมโพเนนต์นี้โฟกัสที่ visual performance และเรนเดอร์ได้เร็วขึ้นประมาณ 224 เท่า
- ให้ฟังก์ชันเหมือน embed แบบปกติ แต่เพิ่มความเร็ว ประสิทธิภาพ และความเป็นส่วนตัวพื้นฐาน
วิธีใช้ Lite YouTube Embed
- เชื่อมต่อ JavaScript สำหรับเริ่มต้นเว็บคอมโพเนนต์
- ใช้งาน
- ติดตั้งจาก npm หรือคัดลอกมาใส่ในโปรเจ็กต์แล้วใช้งานได้
- ใช้งานโดยลิงก์จาก CDN ได้
ทางเลือกอื่น
- เวอร์ชัน Shadow DOM (ปกป้องสไตล์ แต่ปรับแต่งสไตล์ยาก)
- ทำขึ้นเองโดยตรง
- Raymond Camden: สร้างเว็บคอมโพเนนต์ YouTube Embed (เวอร์ชัน vanilla และ WebC)
- Adrian Roselli: เว็บคอมโพเนนต์สำหรับ YouTube และ Vimeo
- Mux:
<youtube-video> (สอดคล้องกับ DOM API)
- React port และเวอร์ชันทางการของ Next.js
สรุปโดย GN⁺
- YouTube Embed ใช้ทรัพยากรมากและส่งผลเสียต่อประสิทธิภาพ
- การใช้เว็บคอมโพเนนต์อย่าง
lite-youtube-embed สามารถช่วยเพิ่มประสิทธิภาพได้อย่างมาก
- ยังอาจส่งผลเชิงบวกต่อสิ่งแวดล้อมด้วย
- เว็บคอมโพเนนต์อื่นที่ให้ฟังก์ชันคล้ายกันก็น่าลองพิจารณา
2 ความคิดเห็น
lite-youtube-embed - ฝัง YouTube ที่เร็วกว่า
ความคิดเห็นบน Hacker News
ตรวจพบการฝัง YouTube บนแพลตฟอร์มฟอรัมชุมชน และแทนที่ด้วยภาพขนาดย่อแบบพร็อกซีที่ไม่โหลดจนกว่าจะมีการคลิก
ผู้เขียนไม่เชื่อว่าเวอร์ชันแบบเบาจะทำให้การมีส่วนร่วมลดลง
ไม่น่าแปลกใจที่ผู้เล่นแบบอื่นจะทำให้ผู้ใช้รู้สึกต่างออกไป
นี่เป็นตัวอย่างของความเชื่อที่ผิดว่าผู้พัฒนารู้แน่ชัดว่าผู้ใช้ใช้งานซอฟต์แวร์อย่างไร
จำเป็นต้องบังคับไม่ให้บล็อกเกอร์ใช้การฝัง GitHub Gist
วิธีหนึ่งในการลดน้ำหนักรวมของการฝังและปรับปรุง UX คือการบล็อกโฆษณา
สำหรับผู้ใช้ ublock สามารถใช้ click 2 load เป็นโซลูชันฝั่งผู้ใช้ได้
มีผลการทดสอบว่าการฝังแบบเบาทำให้การมีส่วนร่วมลดลง
วิดีโอที่ฝังไว้อาจเป็นเพียงองค์ประกอบ <video> ที่ชี้ไปยังไฟล์บนเซิร์ฟเวอร์ของ YouTube
ยิ่งจำนวนการฝังเพิ่มขึ้น น้ำหนักก็ยิ่งเพิ่มแบบเชิงเส้น
แชร์โซลูชันของฉันเป็นทางเลือกแทน lite youtube embed