ใช้การโหลดทันทีด้วยรูปแบบ PRPL

PRPL เป็นคำย่อที่อธิบายรูปแบบที่ใช้ทำให้หน้าเว็บโหลดและโต้ตอบได้และรวดเร็วขึ้น

  • โหลดล่วงหน้าทรัพยากรที่ค้นพบล่าสุด
  • แสดงผลเส้นทางเริ่มต้นโดยเร็วที่สุด
  • แคชล่วงหน้าชิ้นงานที่เหลือ
  • การโหลดแบบเลื่อนเส้นทางอื่นๆ และชิ้นงานที่ไม่ใช่ข้อมูลสําคัญ

ในคู่มือนี้ คุณจะได้เรียนรู้ว่าเทคนิคแต่ละเทคนิคเข้ากันได้อย่างไร แต่ยังคงนำมาใช้ได้อย่างอิสระเพื่อให้ได้ผลลัพธ์ด้านประสิทธิภาพ

ตรวจสอบหน้าเว็บด้วย Lighthouse

เรียกใช้ Lighthouse เพื่อระบุโอกาสในการปรับปรุงที่สอดคล้องกับเทคนิค PRPL ดังนี้

  1. กดแป้น Control+Shift+J (หรือ Command+Option+J ใน Mac) เพื่อเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์
  2. คลิกแท็บ Lighthouse
  3. เลือกช่องทําเครื่องหมายประสิทธิภาพและ Progressive Web App
  4. คลิกเรียกใช้การตรวจสอบเพื่อสร้างรายงาน

ดูข้อมูลเพิ่มเติมได้ที่ค้นพบโอกาสในการปรับปรุงประสิทธิภาพด้วย Lighthouse

โหลดทรัพยากรสําคัญล่วงหน้า

Lighthouse จะแสดงการตรวจสอบที่ไม่สําเร็จดังต่อไปนี้หากมีการแยกวิเคราะห์และดึงข้อมูลทรัพยากรบางอย่างล่าช้า

Lighthouse: ตรวจสอบคำขอคีย์ล่วงหน้า

การโหลดล่วงหน้าคือการส่งคำขอแบบประกาศที่บอกให้เบราว์เซอร์ขอทรัพยากรที่เครื่องมือสแกนการโหลดล่วงหน้าของเบราว์เซอร์ไม่ค้นพบ เช่น รูปภาพที่อ้างอิงโดยพร็อพเพอร์ตี้ background-image โหลดทรัพยากรที่ค้นพบล่าช้าล่วงหน้าด้วยการเพิ่มแท็ก <link> ด้วย rel="preload" ที่ส่วนหัวของเอกสาร HTML ดังนี้

<link rel="preload" as="image" href="hero-image.jpg">

การเพิ่มคำสั่ง <link rel="preload"> จะเป็นการเริ่มคําขอทรัพยากรนั้นและจัดเก็บไว้ในแคช จากนั้นเบราว์เซอร์จะเรียกข้อมูลดังกล่าวได้เมื่อจำเป็น

ดูข้อมูลเพิ่มเติมเกี่ยวกับการโหลดทรัพยากรสําคัญล่วงหน้าได้ในคู่มือโหลดชิ้นงานสําคัญล่วงหน้า

แสดงผลเส้นทางเริ่มต้นโดยเร็วที่สุด

Lighthouse จะแสดงคำเตือนหากมีทรัพยากรที่ทำให้เกิดความล่าช้าในFirst Paint ซึ่งเป็นเวลาที่เว็บไซต์แสดงผลพิกเซลบนหน้าจอ

Lighthouse: กำจัดการตรวจสอบทรัพยากรที่บล็อกการแสดงผล

Lighthouse แนะนำให้แทรก JavaScript ที่สำคัญและเลื่อนส่วนที่เหลือโดยใช้ async รวมไปถึงการใส่ CSS ที่สำคัญในครึ่งหน้าบนเพื่อปรับปรุง First Paint เพื่อปรับปรุงการแสดงผล ซึ่งจะช่วยปรับปรุงประสิทธิภาพโดยกำจัดการส่งไป-กลับไปยังเซิร์ฟเวอร์เพื่อดึงข้อมูลเนื้อหาที่บล็อกการแสดงผล อย่างไรก็ตาม โค้ดในบรรทัดนั้นดูแลรักษาได้ยากกว่าจากมุมมองการพัฒนา และเบราว์เซอร์จะแคชแยกต่างหากไม่ได้

อีกวิธีในการปรับปรุง First Paint คือการแสดงผลฝั่งเซิร์ฟเวอร์ HTML เริ่มต้นของหน้า ซึ่งจะแสดงเนื้อหาต่อผู้ใช้ทันทีขณะที่ระบบยังดึงข้อมูล สับเปลี่ยน และเรียกใช้สคริปต์อยู่ แต่วิธีนี้อาจเพิ่มเพย์โหลดของไฟล์ HTML ได้อย่างมาก ซึ่งอาจส่งผลเสียต่อเวลาในการตอบสนอง หรือเวลาที่แอปพลิเคชันใช้เพื่อมีการโต้ตอบและอาจตอบสนองต่ออินพุตของผู้ใช้

ไม่มีวิธีแก้ไขที่ถูกต้องวิธีเดียวที่จะลด First Paint ในแอปพลิเคชัน และคุณควรพิจารณาการใช้รูปแบบในบรรทัดและการแสดงผลฝั่งเซิร์ฟเวอร์เฉพาะเมื่อประโยชน์ที่จะคุ้มค่ากับผลต่างสำหรับแอปพลิเคชันของคุณ ดูข้อมูลเพิ่มเติมเกี่ยวกับทั้ง 2 แนวคิดนี้ได้ที่แหล่งข้อมูลต่อไปนี้

คำขอ/การตอบกลับด้วย Service Worker

แคชชิ้นงานล่วงหน้า

เมื่อทำหน้าที่เป็นพร็อกซี โปรแกรมทำงานของบริการจะดึงเนื้อหาได้โดยตรงจากแคชแทนเซิร์ฟเวอร์เมื่อเข้าชมซ้ำ ซึ่งไม่เพียงช่วยให้ผู้ใช้ใช้แอปพลิเคชันของคุณเมื่อออฟไลน์ได้ แต่ยังทำให้หน้าเว็บโหลดเร็วขึ้นเมื่อเข้าชมซ้ำ

ใช้ไลบรารีของบุคคลที่สามเพื่อลดความซับซ้อนของกระบวนการสร้าง Service Worker เว้นแต่ว่าคุณจะมีข้อกำหนดการแคชที่ซับซ้อนกว่าที่ไลบรารีมีให้ ตัวอย่างเช่น Workbox มีชุดเครื่องมือที่ช่วยให้คุณสร้างและดูแลรักษา Service Worker เพื่อแคชชิ้นงานได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ Service Worker และความน่าเชื่อถือแบบออฟไลน์ได้ในคู่มือ Service Worker ในเส้นทางการเรียนรู้เกี่ยวกับความเสถียร

การโหลดแบบ Lazy Loading

Lighthouse จะแสดงการตรวจสอบที่ล้มเหลวหากคุณส่งข้อมูลผ่านเครือข่ายมากเกินไป

Lighthouse: มีการตรวจสอบเพย์โหลดเครือข่ายปริมาณมาก

ซึ่งรวมถึงชิ้นงานทุกประเภท แต่โดยเฉพาะอย่างยิ่งเพย์โหลด JavaScript ขนาดใหญ่ที่ส่งผลเสียต่อประสิทธิภาพเนื่องจากเวลาเบราว์เซอร์ใช้ในการแยกวิเคราะห์และคอมไพล์ Lighthouse ยังแสดงคำเตือนตามความเหมาะสมด้วย

Lighthouse: การตรวจสอบเวลาในการเริ่มต้น JavaScript

หากต้องการส่งเพย์โหลด JavaScript ที่เล็กลงซึ่งมีเฉพาะโค้ดที่จําเป็นเมื่อผู้ใช้โหลดแอปพลิเคชันเป็นครั้งแรก ให้แยกกลุ่มทั้งหมดและโหลดแบบเลื่อนตามคําขอ

เมื่อแยกกลุ่มแล้ว ให้โหลดส่วนที่สำคัญกว่าไว้ล่วงหน้า (ดูคู่มือโหลดชิ้นงานที่สำคัญไว้ล่วงหน้า) การโหลดล่วงหน้าช่วยให้เบราว์เซอร์ดึงข้อมูลและดาวน์โหลดทรัพยากรที่สำคัญได้เร็วขึ้น

นอกจากการแยกและโหลดกลุ่ม JavaScript ต่างๆ ตามคำขอแล้ว Lighthouse ยังช่วยตรวจสอบรูปภาพที่ไม่สำคัญด้วยการโหลดแบบ Lazy Loading ด้วย

Lighthouse: เลื่อนการตรวจสอบรูปภาพนอกหน้าจอ

หากคุณโหลดรูปภาพจำนวนมากในหน้าเว็บ ให้เลื่อนรูปภาพทั้งหมดที่อยู่ด้านล่างของหน้าจอหรืออยู่นอกวิวพอร์ตของอุปกรณ์ไว้เมื่อโหลดหน้าเว็บ (ดูใช้ Lazysizes เพื่อโหลดรูปภาพแบบ Lazy Loading)

ขั้นตอนถัดไป

เมื่อเข้าใจแนวคิดพื้นฐานบางอย่างที่อยู่เบื้องหลังรูปแบบ PRPL แล้ว ให้ไปที่คำแนะนำถัดไปในส่วนนี้เพื่อดูข้อมูลเพิ่มเติม โปรดทราบว่าคุณไม่จำเป็นต้องใช้เทคนิคทั้งหมดร่วมกัน การดำเนินการใดๆ ต่อไปนี้จะช่วยปรับปรุงประสิทธิภาพได้อย่างชัดเจน

  • โหลดทรัพยากรที่สำคัญไว้ล่วงหน้า
  • แสดงผลเส้นทางเริ่มต้นโดยเร็วที่สุด
  • แคชล่วงหน้าชิ้นงานที่เหลือ
  • การโหลดแบบเลื่อนเส้นทางอื่นๆ และชิ้นงานที่ไม่ใช่ข้อมูลสําคัญ

อ่านข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ PRPL