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

ใช้ไลบรารีของบุคคลที่สามเพื่อลดความซับซ้อนของการสร้าง 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