หลีกเลี่ยงข้อความที่มองไม่เห็นระหว่างการโหลดแบบอักษร

สาเหตุที่ไม่ควรพลาดผลิตภัณฑ์นี้

แบบอักษรมักเป็นไฟล์ขนาดใหญ่ที่ใช้เวลาโหลดนาน เพื่อรับมือกับปัญหานี้ บางเบราว์เซอร์จะซ่อนข้อความไว้จนกว่าแบบอักษรจะโหลด ("Flash ของข้อความที่มองไม่เห็น")

Largest Contentful Paint (LCP) อาจล่าช้าขณะที่รอให้ข้อความแสดงผล หากคุณกำลังเพิ่มประสิทธิภาพ คุณจะต้องหลีกเลี่ยง "Flash ของข้อความที่มองไม่เห็น" (FOIT) และแสดงให้ผู้ใช้เห็นทันทีโดยใช้แบบอักษรของระบบ ซึ่งจะสร้าง "Flash ของข้อความที่ไม่มีการจัดรูปแบบ" (FOUT)

ค่าเริ่มต้นของเบราว์เซอร์สำหรับการแสดงแบบอักษร

ลักษณะการทำงานเริ่มต้นของการโหลดแบบอักษรสำหรับเบราว์เซอร์ทั่วไปมีดังนี้

เบราว์เซอร์ ลักษณะการทำงานเริ่มต้นหากแบบอักษรไม่พร้อมใช้งาน...
Chrome และ Edge จะซ่อนข้อความสูงสุด 3 วินาที หากข้อความยังไม่พร้อมใช้งาน ระบบจะใช้แบบอักษรของระบบจนกว่าแบบอักษรจะพร้อม จากนั้นจึงเปลี่ยนไปใช้แบบอักษร
Firefox จะซ่อนข้อความสูงสุด 3 วินาที หากข้อความยังไม่พร้อมใช้งาน ระบบจะใช้แบบอักษรของระบบจนกว่าแบบอักษรจะพร้อม จากนั้นจึงเปลี่ยนไปใช้แบบอักษร
Safari ซ่อนข้อความจนกว่าแบบอักษรจะพร้อม

แสดงข้อความทันที

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

ตัวเลือกที่ 1: ใช้ font-display

การสนับสนุนเบราว์เซอร์

  • 60
  • 79
  • 58
  • 11.1

แหล่งที่มา

font-display คือ API สำหรับการระบุกลยุทธ์การแสดงแบบอักษร swap บอกเบราว์เซอร์ว่าข้อความที่ใช้แบบอักษรนี้ควรปรากฏทันทีโดยใช้แบบอักษรของระบบ เมื่อแบบอักษรที่กำหนดเองพร้อมใช้งานแล้ว แบบอักษรของระบบจะถูกสลับออก

/* Before */
@font-face {
  font-family: Helvetica;
}

/* After */
@font-face {
  font-family: Helvetica;
  font-display: swap;
}

หากเบราว์เซอร์ไม่รองรับ font-display แม้ว่าเบราว์เซอร์ที่ทันสมัยทั้งหมดรองรับ เบราว์เซอร์ก็ยังคงเป็นไปตามลักษณะการทำงานเริ่มต้นในการโหลดแบบอักษร

ตัวเลือกที่ 2: รอใช้แบบอักษรที่กำหนดเองจนกว่าจะโหลด

การสนับสนุนเบราว์เซอร์

  • 35
  • 79
  • 41
  • 10

แหล่งที่มา

เมื่อมีการปรับปรุงอีกเล็กน้อย คุณก็จะสามารถใช้แนวทางที่กำหนดเองได้มากขึ้น

วิธีการนี้มี 3 ส่วนดังนี้

  • อย่าใช้แบบอักษรที่กำหนดเองในการโหลดหน้าเริ่มต้นโดยการเปลี่ยนโครงสร้างของ CSS เพื่อไม่ใช้แบบอักษรที่กำหนดเองในตอนแรก การดำเนินการนี้จะช่วยให้เบราว์เซอร์แสดงข้อความทันทีโดยใช้แบบอักษรของระบบ
  • ตรวจจับเมื่อแบบอักษรที่กำหนดเองโหลดโดยใช้ CSS Font Loading API
  • อัปเดตการจัดรูปแบบหน้าเพื่อใช้แบบอักษรที่กำหนดเอง
// Define a FontFace
const font = new FontFace("myfont", "url(myfont.woff)");

// Add to the document.fonts (FontFaceSet)
document.fonts.add(font);

// Load the font
font.load();

// Wait until the fonts are all loaded
document.fonts.ready.then(() => {
  // Update the CSS to use the fonts
});

ซึ่งทำได้โดยใช้ไลบรารี FontFaceObserver ซึ่งบางคนพบว่าใช้ API ง่ายกว่า

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

ยืนยัน

เรียกใช้ Lighthouse เพื่อยืนยันว่าเว็บไซต์ใช้ font-display: swap เพื่อแสดงข้อความ:

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

ยืนยันว่าการตรวจสอบตรวจสอบให้แน่ใจว่าข้อความจะยังมองเห็นได้ในระหว่างการโหลดเว็บฟอนต์