การโหลดสคริปต์ของบุคคลที่สามที่มีประสิทธิภาพ
ในกรณีส่วนใหญ่ สคริปต์ของบุคคลที่สามถือเป็นสคริปต์รอง ก่อนอื่นเราต้องบูตสแตรปและทำให้แอปของเราทำงานก่อนสคริปต์ของบุคคลที่สามเนื่องจาก
เรื่องประสิทธิภาพ
แน่นอนว่าตัวเลือกแรกคือ
การใช้แอตทริบิวต์ "async" หรือ "defer" บนแท็ก ‹script›
นี่เป็นเรื่องปกติสำหรับหนึ่งหรือสองสคริปต์ แต่ถ้าคุณมี
1. เครื่องมือวิเคราะห์หลายรายการ 📈
2. สคริปต์การรวมการชำระเงิน เช่น Chargebee 🤑
3. เครื่องมือบันทึกข้อผิดพลาด เช่น Sentry io ⚠️
4. แชทบอท เช่น Hubspot Chat 💬
5. เครื่องมืออัปเดตผลิตภัณฑ์ เช่น Beamer 🆕
6. และอาจจะมากกว่านั้นเหมือนที่เรามีในองค์กรก่อนหน้าของเรา
อะซิงก์และการเลื่อนทำงานได้ดี แต่สคริปต์ที่กล่าวถึงข้างต้นนำไปสู่การร้องขอ
1. สคริปต์อื่น
2. การเรียก XHR
3. สไตล์ชีท
สิ่งนี้จะอุดตันแบนด์วิดท์ของผู้ใช้ซึ่งเป็นอุปสรรคต่อการโหลดและการบูตแอปโฮสต์ ส่งผลให้ผู้ใช้ได้รับประสบการณ์ที่ไม่ดี
แล้วเราจะทำอะไรได้บ้าง:
- ลบออกหากไม่เพิ่มมูลค่าที่ชัดเจนให้กับไซต์ของคุณ (ซึ่งไม่ใช่ตัวเลือกเสมอไป)
- ปรับกระบวนการโหลดให้เหมาะสม (มาลองสิ่งนี้กัน)
สิ่งแรกที่เราควรโหลดสคริปต์เป็นส่วนหนึ่งของแอป React/Angular ของเรา ไม่ใช่ส่วนหนึ่งของ index.html เนื่องจากจาวาสคริปต์ช่วยให้เราควบคุมการโหลดได้มากกว่า HTML
นี่คือเวอร์ชัน React ของโซลูชัน ThirdPartyLoadingComponent
ดังนั้นฟังก์ชัน loadScript จึงอธิบายได้ในตัว เราจึงลองใช้เวทย์มนตร์ด้านล่าง:
if ('scheduler' in window) { window.scheduler?.postTask(loadScript, { priority: 'background', delay }); } else if ('requestIdleCallback' in window) { setTimeout(() => { requestIdleCallback(loadScript)…