ภาพรวม
ก่อนที่เบราว์เซอร์จะแสดงผลหน้าเว็บได้ เบราว์เซอร์จะต้องสร้างแผนผัง DOM โดยการแยกวิเคราะห์มาร์กอัป HTML ในระหว่างขั้นตอนนี้ เมื่อใดก็ตามที่โปรแกรมแยกวิเคราะห์พบสคริปต์ โปรแกรมจะต้องหยุดและเรียกใช้สคริปต์ก่อนจะสามารถแยกวิเคราะห์ HTML ต่อไปได้ ในกรณีของสคริปต์ภายนอก ระบบจะบังคับให้โปรแกรมแยกวิเคราะห์รอดาวน์โหลดทรัพยากรด้วย ซึ่งอาจทำให้เกิดรอบการแสดงโฆษณาของเครือข่ายอย่างน้อย 1 รอบ และทำให้เวลาในการแสดงผลหน้าเว็บครั้งแรกล่าช้า ดู การเพิ่มการโต้ตอบด้วย JavaScript เพื่อเรียนรู้เพิ่มเติมว่า JavaScript ส่งผลต่อเส้นทางการแสดงผลที่สำคัญอย่างไรการแนะนำวิดีโอ
คุณควรหลีกเลี่ยงและลดการใช้การบล็อก JavaScript โดยเฉพาะสคริปต์ภายนอกที่ต้องดึงข้อมูลก่อนจึงจะเรียกใช้ได้ คุณแทรกสคริปต์ที่จำเป็นต่อการแสดงเนื้อหาของหน้าได้เพื่อหลีกเลี่ยงคำขอจากเครือข่ายเพิ่มเติม แต่เนื้อหาที่แทรกจะต้องมีขนาดเล็กและต้องดำเนินการอย่างรวดเร็วเพื่อให้ได้ประสิทธิภาพที่ดี สคริปต์ที่ไม่จำเป็นต่อการแสดงผลครั้งแรกควรทำเป็นแบบอะซิงโครนัสหรือเลื่อนเวลาออกไปจนกว่าจะแสดงผลครั้งแรกเสร็จ โปรดทราบว่าหากต้องการปรับปรุงเวลาที่ใช้ในการโหลด คุณจะต้อง เพิ่มประสิทธิภาพการนำส่ง CSS ด้วยJavaScript ในหน้า
สคริปต์การบล็อกภายนอกจะบังคับให้เบราว์เซอร์รอให้มีการดึงข้อมูล JavaScript ซึ่งอาจเพิ่มรอบการแสดงเครือข่ายอย่างน้อย 1 รอบก่อนที่จะแสดงหน้าเว็บได้ หากสคริปต์ภายนอกมีขนาดเล็ก คุณอาจแทรกเนื้อหาของสคริปต์ภายนอกลงในเอกสาร HTML โดยตรงเพื่อหลีกเลี่ยงเวลาในการตอบสนองของคำขอเครือข่าย ตัวอย่างเช่น หากเอกสาร HTML มีลักษณะดังนี้<html> <head> <script type="text/javascript" src="small.js"></script> </head> <body> <div> Hello, world! </div> </body> </html>และทรัพยากร
small.js
มีลักษณะดังนี้
/* contents of a small JavaScript file */จากนั้นคุณสามารถแทรกสคริปต์ในหน้าดังนี้
<html> <head> <script type="text/javascript"> /* contents of a small JavaScript file */ </script> </head> <body> <div> Hello, world! </div> </body> </html>การรวมเนื้อหาของสคริปต์จะลบคำขอภายนอกสำหรับ
small.js
และช่วยให้เบราว์เซอร์มีเวลาแสดงผลครั้งแรกที่เร็วขึ้น อย่างไรก็ตาม โปรดทราบว่าการแทรกในบรรทัดยังทำให้เอกสาร HTML มีขนาดมากขึ้น และอาจต้องแทรกเนื้อหาสคริปต์เดียวกันในหลายๆ หน้าด้วย ด้วยเหตุนี้ คุณจึงควรแทรกสคริปต์ขนาดเล็กในหน้าเท่านั้นเพื่อให้มีประสิทธิภาพที่ดีที่สุด
ทำให้ JavaScript เป็นแบบอะซิงโครนัส
โดยค่าเริ่มต้น JavaScript จะบล็อกการสร้าง DOM และทำให้เวลาในการแสดงผลครั้งแรกล่าช้า หากต้องการป้องกันไม่ให้ JavaScript บล็อกโปรแกรมแยกวิเคราะห์ เราขอแนะนำให้ใช้แอตทริบิวต์ HTMLasync
ในสคริปต์ภายนอก ตัวอย่างเช่น
<script async src="my.js">โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับสคริปต์แบบอะซิงโครนัสได้ใน การบล็อกโปรแกรมแยกวิเคราะห์เทียบกับ JavaScript แบบอะซิงโครนัส โปรดทราบว่าไม่มีการรับประกันว่าสคริปต์แบบอะซิงโครนัสจะทำงานได้ตามลำดับที่ระบุ และไม่ควรใช้
document.write
อาจจำเป็นต้องเขียนสคริปต์ที่ขึ้นอยู่กับคำสั่งดำเนินการหรือต้องเข้าถึงหรือแก้ไข DOM หรือ CSSOM ของหน้าเว็บใหม่เพื่อให้สอดคล้องกับข้อจำกัดเหล่านี้
เลื่อนการโหลด JavaScript
การโหลดและการดำเนินการของสคริปต์ที่ไม่จำเป็นต่อการแสดงผลหน้าเริ่มต้นอาจเลื่อนออกไปจนกว่าการแสดงผลครั้งแรกหรือส่วนที่สำคัญอื่นๆ ของหน้าจะโหลดเสร็จ การทำเช่นนี้ช่วยลดการช่วงชิงทรัพยากรและปรับปรุงประสิทธิภาพได้คำถามที่พบบ่อย
- แล้วถ้าฉันใช้ไลบรารี JavaScript เช่น jQuery ล่ะ
- ไลบรารี JavaScript จำนวนมาก เช่น JQuery ใช้สำหรับปรับปรุงหน้าเว็บเพื่อเพิ่มการโต้ตอบ ภาพเคลื่อนไหว และเอฟเฟกต์อื่นๆ เพิ่มเติม อย่างไรก็ตาม คุณสามารถเพิ่มลักษณะการทำงานเหล่านี้ได้อย่างปลอดภัยหลังจากที่แสดงเนื้อหาครึ่งหน้าบนแล้ว ตรวจสอบการทำให้ JavaScript ดังกล่าวไม่พร้อมกันหรือเลื่อนการโหลด
- แล้วถ้าฉันใช้เฟรมเวิร์ก JavaScript ในการสร้างหน้าเว็บล่ะ
- หากเนื้อหาของหน้าสร้างโดย JavaScript ฝั่งไคลเอ็นต์ คุณควรตรวจสอบการอินไลน์โมดูล JavaScript ที่เกี่ยวข้องเพื่อหลีกเลี่ยงรอบเครือข่ายเพิ่มเติม ในทำนองเดียวกัน การใช้ประโยชน์จากการแสดงผลฝั่งเซิร์ฟเวอร์ก็ช่วยปรับปรุงประสิทธิภาพการโหลดหน้าเว็บครั้งแรกได้อย่างมาก นั่นคือ แสดงผลเทมเพลต JavaScript บนเซิร์ฟเวอร์เพื่อให้แสดงผลครั้งแรกอย่างรวดเร็ว จากนั้นใช้เทมเพลตฝั่งไคลเอ็นต์เมื่อโหลดหน้าเว็บแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับการแสดงผลฝั่งเซิร์ฟเวอร์ได้ที่ http://youtu.be/VKTWdaupft0?t=14m28s
ความคิดเห็น
หน้านี้มีประโยชน์ไหม