PRPL เป็นคำย่อที่อธิบายรูปแบบที่ใช้ทำให้หน้าเว็บโหลดและโต้ตอบได้และรวดเร็วขึ้น
- โหลดล่วงหน้าทรัพยากรที่ค้นพบล่าสุด
- แสดงผลเส้นทางเริ่มต้นโดยเร็วที่สุด
- แคชล่วงหน้าชิ้นงานที่เหลือ
- การโหลดแบบเลื่อนเส้นทางอื่นๆ และชิ้นงานที่ไม่ใช่ข้อมูลสําคัญ
ในคู่มือนี้ คุณจะได้เรียนรู้ว่าเทคนิคแต่ละเทคนิคเข้ากันได้อย่างไร แต่ยังคงนำมาใช้ได้อย่างอิสระเพื่อให้ได้ผลลัพธ์ด้านประสิทธิภาพ
ตรวจสอบหน้าเว็บด้วย Lighthouse
เรียกใช้ Lighthouse เพื่อระบุโอกาสในการปรับปรุงที่สอดคล้องกับเทคนิค PRPL ดังนี้
- กดแป้น Control+Shift+J (หรือ Command+Option+J ใน Mac) เพื่อเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์
- คลิกแท็บ Lighthouse
- เลือกช่องทําเครื่องหมายประสิทธิภาพและ Progressive Web App
- คลิกเรียกใช้การตรวจสอบเพื่อสร้างรายงาน
ดูข้อมูลเพิ่มเติมได้ที่ค้นพบโอกาสในการปรับปรุงประสิทธิภาพด้วย Lighthouse
โหลดทรัพยากรสําคัญล่วงหน้า
Lighthouse จะแสดงการตรวจสอบที่ไม่สําเร็จดังต่อไปนี้หากมีการแยกวิเคราะห์และดึงข้อมูลทรัพยากรบางอย่างล่าช้า
การโหลดล่วงหน้าคือการส่งคำขอแบบประกาศที่บอกให้เบราว์เซอร์ขอทรัพยากรที่เครื่องมือสแกนการโหลดล่วงหน้าของเบราว์เซอร์ไม่ค้นพบ เช่น รูปภาพที่อ้างอิงโดยพร็อพเพอร์ตี้ background-image
โหลดทรัพยากรที่ค้นพบล่าช้าล่วงหน้าด้วยการเพิ่มแท็ก <link>
ด้วย rel="preload"
ที่ส่วนหัวของเอกสาร HTML ดังนี้
<link rel="preload" as="image" href="hero-image.jpg">
การเพิ่มคำสั่ง <link rel="preload">
จะเป็นการเริ่มคําขอทรัพยากรนั้นและจัดเก็บไว้ในแคช จากนั้นเบราว์เซอร์จะเรียกข้อมูลดังกล่าวได้เมื่อจำเป็น
ดูข้อมูลเพิ่มเติมเกี่ยวกับการโหลดทรัพยากรสําคัญล่วงหน้าได้ในคู่มือโหลดชิ้นงานสําคัญล่วงหน้า
แสดงผลเส้นทางเริ่มต้นโดยเร็วที่สุด
Lighthouse จะแสดงคำเตือนหากมีทรัพยากรที่ทำให้เกิดความล่าช้าในFirst Paint ซึ่งเป็นเวลาที่เว็บไซต์แสดงผลพิกเซลบนหน้าจอ
Lighthouse แนะนำให้แทรก JavaScript ที่สำคัญและเลื่อนส่วนที่เหลือโดยใช้ async
รวมไปถึงการใส่ CSS ที่สำคัญในครึ่งหน้าบนเพื่อปรับปรุง First Paint เพื่อปรับปรุงการแสดงผล ซึ่งจะช่วยปรับปรุงประสิทธิภาพโดยกำจัดการส่งไป-กลับไปยังเซิร์ฟเวอร์เพื่อดึงข้อมูลเนื้อหาที่บล็อกการแสดงผล
อย่างไรก็ตาม โค้ดในบรรทัดนั้นดูแลรักษาได้ยากกว่าจากมุมมองการพัฒนา และเบราว์เซอร์จะแคชแยกต่างหากไม่ได้
อีกวิธีในการปรับปรุง First Paint คือการแสดงผลฝั่งเซิร์ฟเวอร์ HTML เริ่มต้นของหน้า ซึ่งจะแสดงเนื้อหาต่อผู้ใช้ทันทีขณะที่ระบบยังดึงข้อมูล สับเปลี่ยน และเรียกใช้สคริปต์อยู่ แต่วิธีนี้อาจเพิ่มเพย์โหลดของไฟล์ HTML ได้อย่างมาก ซึ่งอาจส่งผลเสียต่อเวลาในการตอบสนอง หรือเวลาที่แอปพลิเคชันใช้เพื่อมีการโต้ตอบและอาจตอบสนองต่ออินพุตของผู้ใช้
ไม่มีวิธีแก้ไขที่ถูกต้องวิธีเดียวที่จะลด First Paint ในแอปพลิเคชัน และคุณควรพิจารณาการใช้รูปแบบในบรรทัดและการแสดงผลฝั่งเซิร์ฟเวอร์เฉพาะเมื่อประโยชน์ที่จะคุ้มค่ากับผลต่างสำหรับแอปพลิเคชันของคุณ ดูข้อมูลเพิ่มเติมเกี่ยวกับทั้ง 2 แนวคิดนี้ได้ที่แหล่งข้อมูลต่อไปนี้
แคชชิ้นงานล่วงหน้า
เมื่อทำหน้าที่เป็นพร็อกซี โปรแกรมทำงานของบริการจะดึงเนื้อหาได้โดยตรงจากแคชแทนเซิร์ฟเวอร์เมื่อเข้าชมซ้ำ ซึ่งไม่เพียงช่วยให้ผู้ใช้ใช้แอปพลิเคชันของคุณเมื่อออฟไลน์ได้ แต่ยังทำให้หน้าเว็บโหลดเร็วขึ้นเมื่อเข้าชมซ้ำ
ใช้ไลบรารีของบุคคลที่สามเพื่อลดความซับซ้อนของกระบวนการสร้าง Service Worker เว้นแต่ว่าคุณจะมีข้อกำหนดการแคชที่ซับซ้อนกว่าที่ไลบรารีมีให้ ตัวอย่างเช่น Workbox มีชุดเครื่องมือที่ช่วยให้คุณสร้างและดูแลรักษา Service Worker เพื่อแคชชิ้นงานได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ Service Worker และความน่าเชื่อถือแบบออฟไลน์ได้ในคู่มือ Service Worker ในเส้นทางการเรียนรู้เกี่ยวกับความเสถียร
การโหลดแบบ Lazy Loading
Lighthouse จะแสดงการตรวจสอบที่ล้มเหลวหากคุณส่งข้อมูลผ่านเครือข่ายมากเกินไป
ซึ่งรวมถึงชิ้นงานทุกประเภท แต่โดยเฉพาะอย่างยิ่งเพย์โหลด JavaScript ขนาดใหญ่ที่ส่งผลเสียต่อประสิทธิภาพเนื่องจากเวลาเบราว์เซอร์ใช้ในการแยกวิเคราะห์และคอมไพล์ Lighthouse ยังแสดงคำเตือนตามความเหมาะสมด้วย
หากต้องการส่งเพย์โหลด JavaScript ที่เล็กลงซึ่งมีเฉพาะโค้ดที่จําเป็นเมื่อผู้ใช้โหลดแอปพลิเคชันเป็นครั้งแรก ให้แยกกลุ่มทั้งหมดและโหลดแบบเลื่อนตามคําขอ
เมื่อแยกกลุ่มแล้ว ให้โหลดส่วนที่สำคัญกว่าไว้ล่วงหน้า (ดูคู่มือโหลดชิ้นงานที่สำคัญไว้ล่วงหน้า) การโหลดล่วงหน้าช่วยให้เบราว์เซอร์ดึงข้อมูลและดาวน์โหลดทรัพยากรที่สำคัญได้เร็วขึ้น
นอกจากการแยกและโหลดกลุ่ม JavaScript ต่างๆ ตามคำขอแล้ว Lighthouse ยังช่วยตรวจสอบรูปภาพที่ไม่สำคัญด้วยการโหลดแบบ Lazy Loading ด้วย
หากคุณโหลดรูปภาพจำนวนมากในหน้าเว็บ ให้เลื่อนรูปภาพทั้งหมดที่อยู่ด้านล่างของหน้าจอหรืออยู่นอกวิวพอร์ตของอุปกรณ์ไว้เมื่อโหลดหน้าเว็บ (ดูใช้ Lazysizes เพื่อโหลดรูปภาพแบบ Lazy Loading)
ขั้นตอนถัดไป
เมื่อเข้าใจแนวคิดพื้นฐานบางอย่างที่อยู่เบื้องหลังรูปแบบ PRPL แล้ว ให้ไปที่คำแนะนำถัดไปในส่วนนี้เพื่อดูข้อมูลเพิ่มเติม โปรดทราบว่าคุณไม่จำเป็นต้องใช้เทคนิคทั้งหมดร่วมกัน การดำเนินการใดๆ ต่อไปนี้จะช่วยปรับปรุงประสิทธิภาพได้อย่างชัดเจน
- โหลดทรัพยากรที่สำคัญไว้ล่วงหน้า
- แสดงผลเส้นทางเริ่มต้นโดยเร็วที่สุด
- แคชล่วงหน้าชิ้นงานที่เหลือ
- การโหลดแบบเลื่อนเส้นทางอื่นๆ และชิ้นงานที่ไม่ใช่ข้อมูลสําคัญ
อ่านข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ PRPL