ไทย

เรียนรู้วิธีใช้ Resource Hints เช่น preload, prefetch และ preconnect เพื่อเพิ่มประสิทธิภาพเวลาในการโหลดเว็บไซต์และปรับปรุงประสบการณ์ผู้ใช้ทั่วโลก

เพิ่มความเร็วเว็บไซต์ด้วย Resource Hints: Preload, Prefetch และ Preconnect

ในโลกดิจิทัลที่เปลี่ยนแปลงอย่างรวดเร็วในปัจจุบัน ความเร็วของเว็บไซต์เป็นสิ่งสำคัญอย่างยิ่ง ผู้ใช้คาดหวังให้เว็บไซต์โหลดเร็วและตอบสนองทันที เวลาในการโหลดที่ช้าอาจนำไปสู่ประสบการณ์ผู้ใช้ที่ไม่ดี อัตราตีกลับที่สูงขึ้น และท้ายที่สุดคือการสูญเสียโอกาสทางธุรกิจ Resource hints เป็นเครื่องมือที่มีประสิทธิภาพที่ช่วยให้นักพัฒนาสามารถปรับปรุงเวลาในการโหลดเว็บไซต์โดยการบอกเบราว์เซอร์ว่าทรัพยากรใดมีความสำคัญและควรจัดลำดับความสำคัญอย่างไร บทความนี้จะสำรวจ resource hints ที่สำคัญสามอย่าง ได้แก่ preload, prefetch และ preconnect พร้อมทั้งให้ตัวอย่างการใช้งานจริง

ทำความเข้าใจเกี่ยวกับ Resource Hints

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

Resource hints หลักสามอย่างคือ:

Preload: การจัดลำดับความสำคัญของทรัพยากรที่สำคัญ

Preload คืออะไร?

Preload เป็นการดึงข้อมูลแบบประกาศ (declarative fetch) ที่ช่วยให้คุณสามารถบอกเบราว์เซอร์ให้ดึงทรัพยากรที่จำเป็นสำหรับการนำทางปัจจุบันให้เร็วที่สุดเท่าที่จะเป็นไปได้ สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับทรัพยากรที่เบราว์เซอร์ค้นพบช้า เช่น รูปภาพ, ฟอนต์, สคริปต์ หรือสไตล์ชีตที่โหลดผ่าน CSS หรือ JavaScript การโหลดทรัพยากรเหล่านี้ล่วงหน้าจะช่วยป้องกันไม่ให้มันกลายเป็นตัวบล็อกการเรนเดอร์ (render-blocking) และปรับปรุงความเร็วในการโหลดที่ผู้ใช้รับรู้ได้

เมื่อใดที่ควรใช้ Preload

ใช้ preload สำหรับ:

วิธีใช้งาน Preload

คุณสามารถใช้งาน preload โดยใช้แท็ก <link> ในส่วน <head> ของเอกสาร HTML ของคุณ:

<link rel="preload" href="/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
<link rel="preload" href="/styles/critical.css" as="style">
<link rel="preload" href="/scripts/app.js" as="script">
<link rel="preload" href="/images/hero.jpg" as="image">

คำอธิบาย:

ตัวอย่าง: การโหลดฟอนต์ล่วงหน้า

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

<link rel="preload" href="/fonts/OpenSans-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">

ตัวอย่าง: การโหลดไฟล์ CSS ที่สำคัญล่วงหน้า

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

<link rel="preload" href="/styles/critical.css" as="style">

แนวทางปฏิบัติที่ดีที่สุดสำหรับ Preload

Prefetch: การคาดการณ์ความต้องการในอนาคต

Prefetch คืออะไร?

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

เมื่อใดที่ควรใช้ Prefetch

ใช้ prefetch สำหรับ:

วิธีใช้งาน Prefetch

คุณสามารถใช้งาน prefetch โดยใช้แท็ก <link> ในส่วน <head> ของเอกสาร HTML ของคุณ:

<link rel="prefetch" href="/page2.html">
<link rel="prefetch" href="/images/product.jpg">
<link rel="prefetch" href="/scripts/modal.js">

คำอธิบาย:

ตัวอย่าง: การดึงทรัพยากรของหน้าถัดไปล่วงหน้า

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

<link rel="prefetch" href="/form/step2.html">

ตัวอย่าง: การดึงทรัพยากรสำหรับหน้าต่าง modal ล่วงหน้า

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

<link rel="prefetch" href="/scripts/modal.js">
<link rel="prefetch" href="/styles/modal.css">

แนวทางปฏิบัติที่ดีที่สุดสำหรับ Prefetch

Preconnect: การสร้างการเชื่อมต่อล่วงหน้า

Preconnect คืออะไร?

Preconnect เป็น resource hint ที่ช่วยให้คุณสามารถสร้างการเชื่อมต่อล่วงหน้าไปยังเซิร์ฟเวอร์ของบุคคลที่สามที่สำคัญได้ การสร้างการเชื่อมต่อประกอบด้วยหลายขั้นตอน รวมถึงการค้นหา DNS (DNS lookup), การจับมือ TCP (TCP handshake) และการเจรจา TLS (TLS negotiation) ขั้นตอนเหล่านี้สามารถเพิ่มความหน่วงแฝง (latency) อย่างมากในการโหลดทรัพยากรจากเซิร์ฟเวอร์เหล่านั้น Preconnect ช่วยให้คุณสามารถเริ่มต้นขั้นตอนเหล่านี้ในเบื้องหลัง เพื่อที่ว่าเมื่อเบราว์เซอร์ต้องการดึงทรัพยากรจากเซิร์ฟเวอร์ การเชื่อมต่อจะถูกสร้างไว้แล้ว

เมื่อใดที่ควรใช้ Preconnect

ใช้ preconnect สำหรับ:

วิธีใช้งาน Preconnect

คุณสามารถใช้งาน preconnect โดยใช้แท็ก <link> ในส่วน <head> ของเอกสาร HTML ของคุณ:

<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.example.com">

คำอธิบาย:

ตัวอย่าง: การเชื่อมต่อล่วงหน้าไปยัง Google Fonts

หากเว็บไซต์ของคุณใช้ Google Fonts การเชื่อมต่อล่วงหน้าไปยัง https://fonts.gstatic.com สามารถลดความหน่วงแฝงของการโหลดฟอนต์ได้อย่างมาก

<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

คุณสมบัติ `crossorigin` มีความสำคัญอย่างยิ่งในที่นี้ เนื่องจาก Google Fonts ใช้ CORS ในการให้บริการฟอนต์

ตัวอย่าง: การเชื่อมต่อล่วงหน้าไปยัง CDN

หากเว็บไซต์ของคุณใช้ CDN เพื่อให้บริการเนื้อหาคงที่ (static assets) การเชื่อมต่อล่วงหน้าไปยังชื่อโฮสต์ของ CDN สามารถลดความหน่วงแฝงในการโหลดเนื้อหาเหล่านั้นได้

<link rel="preconnect" href="https://cdn.example.com">

แนวทางปฏิบัติที่ดีที่สุดสำหรับ Preconnect

การใช้ Resource Hints ร่วมกันเพื่อประสิทธิภาพสูงสุด

พลังที่แท้จริงของ resource hints อยู่ที่การนำมาใช้ร่วมกันอย่างมีกลยุทธ์ นี่คือตัวอย่างการใช้งานจริง:

สมมติว่าเว็บไซต์หนึ่งใช้ฟอนต์ที่กำหนดเองซึ่งโฮสต์อยู่บน CDN และโหลดไฟล์ JavaScript ที่สำคัญ

  1. เชื่อมต่อล่วงหน้าไปยัง CDN: สร้างการเชื่อมต่อล่วงหน้าไปยัง CDN ที่โฮสต์ฟอนต์และไฟล์ JavaScript.
    <link rel="preconnect" href="https://cdn.example.com" crossorigin>
  2. โหลดฟอนต์ล่วงหน้า: จัดลำดับความสำคัญในการโหลดฟอนต์เพื่อป้องกัน FOUT.
    <link rel="preload" href="https://cdn.example.com/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
  3. โหลดไฟล์ JavaScript ล่วงหน้า: จัดลำดับความสำคัญในการโหลดไฟล์ JavaScript เพื่อให้แน่ใจว่าพร้อมใช้งานเมื่อต้องการ.
    <link rel="preload" href="https://cdn.example.com/scripts/app.js" as="script">

เครื่องมือสำหรับวิเคราะห์ Resource Hints

มีเครื่องมือหลายอย่างที่สามารถช่วยคุณวิเคราะห์ประสิทธิภาพของ resource hints ของคุณได้:

ข้อผิดพลาดที่พบบ่อยและวิธีหลีกเลี่ยง

อนาคตของ Resource Hints

Resource hints มีการพัฒนาอย่างต่อเนื่อง โดยมีการเพิ่มคุณสมบัติและการปรับปรุงใหม่ ๆ เข้าไปในข้อกำหนดของเบราว์เซอร์ การติดตามการพัฒนาล่าสุดใน resource hints จะช่วยให้คุณสามารถปรับปรุงประสิทธิภาพเว็บไซต์ของคุณได้ดียิ่งขึ้น ตัวอย่างเช่น modulepreload เป็น resource hint ที่ใหม่กว่าซึ่งออกแบบมาโดยเฉพาะสำหรับการโหลดโมดูล JavaScript ล่วงหน้า นอกจากนี้ คุณสมบัติ `priority` สำหรับ resource hints ยังช่วยให้คุณสามารถระบุลำดับความสำคัญของทรัพยากรเมื่อเทียบกับทรัพยากรอื่น ๆ ได้ การรองรับคุณสมบัติเหล่านี้ของเบราว์เซอร์ยังคงมีการพัฒนาอยู่ ดังนั้นควรตรวจสอบความเข้ากันได้ก่อนนำไปใช้งาน

สรุป

Resource hints เป็นเครื่องมือที่มีประสิทธิภาพในการปรับปรุงเวลาในการโหลดเว็บไซต์และปรับปรุงประสบการณ์ผู้ใช้ ด้วยการใช้ preload, prefetch และ preconnect อย่างมีกลยุทธ์ คุณสามารถแจ้งเบราว์เซอร์ล่วงหน้าเกี่ยวกับทรัพยากรที่สำคัญ ลดความหน่วงแฝง และเพิ่มประสิทธิภาพที่รับรู้ได้ของเว็บไซต์ของคุณ อย่าลืมจัดลำดับความสำคัญของทรัพยากรที่สำคัญ ใช้ resource hints อย่างรอบคอบ และทดสอบผลกระทบด้านประสิทธิภาพของการเปลี่ยนแปลงของคุณเสมอ โดยการปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดที่ระบุไว้ในบทความนี้ คุณจะสามารถปรับปรุงประสิทธิภาพของเว็บไซต์ของคุณได้อย่างมากและมอบประสบการณ์ที่ดีขึ้นให้กับผู้ใช้ทั่วโลก