เพิ่มประสิทธิภาพแบบอักษรบนเว็บสําหรับ Core Web Vitals
บทความนี้กล่าวถึงแนวทางปฏิบัติแนะนำด้านประสิทธิภาพสำหรับแบบอักษร เว็บฟอนต์ส่งผลต่อประสิทธิภาพได้หลายวิธี ดังนี้
- การแสดงผลข้อความที่ล่าช้า: หากเว็บแบบอักษรยังไม่โหลด เบราว์เซอร์มักจะแสดงผลข้อความล่าช้า ในหลายกรณี การดำเนินการนี้จะทำให้ First Contentful Paint (FCP) ล่าช้า ในบางกรณี การดำเนินการนี้จะทำให้ Largest Contentful Paint (LCP) ล่าช้า
- การเปลี่ยนเลย์เอาต์: การเปลี่ยนแบบอักษรอาจทำให้เกิดการเปลี่ยนแปลงเลย์เอาต์และส่งผลต่อ Cumulative Layout Shift (CLS) การเปลี่ยนเลย์เอาต์เหล่านี้จะเกิดขึ้นเมื่อแบบอักษรเว็บและแบบอักษรสำรองใช้พื้นที่ในหน้าเว็บต่างกัน
บทความนี้แบ่งออกเป็น 3 ส่วน ได้แก่ การโหลดแบบอักษร การส่งแบบอักษร และการแสดงผลแบบอักษร โดยแต่ละส่วนจะอธิบายถึงวิธีการทำงานของวงจรการใช้งานแบบอักษรในแง่มุมนั้นๆ และให้แนวทางปฏิบัติแนะนำที่เกี่ยวข้อง
การโหลดแบบอักษร
โดยปกติแล้วแบบอักษรเป็นทรัพยากรสําคัญ เนื่องจากหากไม่มีแบบอักษร ผู้ใช้อาจดูเนื้อหาของหน้าเว็บไม่ได้ ดังนั้น โดยทั่วไปแนวทางปฏิบัติแนะนำสำหรับการโหลดแบบอักษรจะมุ่งเน้นไปที่การทำให้แบบอักษรโหลดเร็วที่สุดเท่าที่จะเป็นไปได้ คุณควรระมัดระวังเป็นพิเศษกับแบบอักษรที่โหลดจากเว็บไซต์ของบุคคลที่สาม เนื่องจากการดาวน์โหลดไฟล์แบบอักษรเหล่านี้ต้องมีการตั้งค่าการเชื่อมต่อแยกต่างหาก
หากไม่แน่ใจว่ามีการขอแบบอักษรของหน้าเว็บทันเวลาหรือไม่ ให้ดูข้อมูลเพิ่มเติมในแท็บการกำหนดเวลาภายในแผงเครือข่ายในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
ทำความเข้าใจ @font-face
ก่อนเจาะลึกแนวทางปฏิบัติแนะนำสำหรับการโหลดแบบอักษร คุณควรทำความเข้าใจวิธีการทำงานของ @font-face
และผลกระทบที่วิธีนี้ส่งผลต่อการโหลดแบบอักษร
การประกาศ @font-face
เป็นส่วนสําคัญของการใช้แบบอักษรบนเว็บ โดยอย่างน้อยจะต้องประกาศชื่อที่จะใช้อ้างอิงแบบอักษรและระบุตำแหน่งของไฟล์แบบอักษรที่เกี่ยวข้อง
@font-face {
font-family: "Open Sans";
src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
}
คําเข้าใจผิดที่พบบ่อยคือระบบจะขอแบบอักษรเมื่อพบการประกาศ @font-face
ซึ่งไม่เป็นความจริง การประกาศ @font-face
เพียงอย่างเดียวจะไม่ทริกเกอร์การดาวน์โหลดแบบอักษร แต่ระบบจะดาวน์โหลดแบบอักษรเฉพาะในกรณีที่มีการอ้างอิงโดยการจัดรูปแบบที่ใช้ในหน้าเท่านั้น เช่น
@font-face {
font-family: "Open Sans";
src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
}
h1 {
font-family: "Open Sans"
}
กล่าวคือ ในตัวอย่างข้างต้น ระบบจะดาวน์โหลด Open Sans
เฉพาะในกรณีที่หน้าเว็บมีองค์ประกอบ <h1>
ดังนั้น เมื่อนึกถึงการเพิ่มประสิทธิภาพแบบอักษร สิ่งสำคัญคือการพิจารณาสไตล์ชีตมากพอๆ กับไฟล์แบบอักษร การเปลี่ยนแปลงเนื้อหาหรือการนำส่งสไตล์ชีตอาจส่งผลอย่างมากต่อเวลาที่แบบอักษรจะปรากฏ ในทํานองเดียวกัน การนำ CSS ที่ไม่ได้ใช้ออกและการแยกสไตล์ชีตยังช่วยลดจำนวนแบบอักษรที่โหลดในแต่ละหน้าได้ด้วย
การประกาศแบบอักษรในบรรทัด
เว็บไซต์ส่วนใหญ่จะได้รับประโยชน์อย่างมากจากการประกาศแบบอักษรและการจัดรูปแบบที่สำคัญอื่นๆ ในบรรทัดของ <head>
ในเอกสารหลักแทนที่จะรวมไว้ในสไตล์ชีตภายนอก วิธีนี้ช่วยให้เบราว์เซอร์ค้นพบการประกาศแบบอักษรได้เร็วขึ้น เนื่องจากไม่ต้องรอให้ดาวน์โหลดสไตล์ชีตภายนอก
<head>
<style>
@font-face {
font-family: "Open Sans";
src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
}
body {
font-family: "Open Sans";
}
...etc.
</style>
</head>
การแสดง CSS ที่สําคัญในหน้าเว็บเป็นเทคนิคขั้นสูงที่เว็บไซต์บางแห่งอาจทำไม่ได้ ประโยชน์ด้านประสิทธิภาพนั้นชัดเจน แต่ต้องใช้กระบวนการและเครื่องมือสร้างเพิ่มเติมเพื่อให้แน่ใจว่า CSS ที่จำเป็น (และควรเป็น CSS ที่สำคัญเท่านั้น) ได้รับการแทรกอย่างถูกต้อง และ CSS เพิ่มเติมทั้งหมดได้รับการนำส่งในลักษณะที่ไม่บล็อกการแสดงผล
เชื่อมต่อกับต้นทางของบุคคลที่สามที่สำคัญล่วงหน้า
หากเว็บไซต์โหลดแบบอักษรจากเว็บไซต์ของบุคคลที่สาม เราขอแนะนําอย่างยิ่งให้คุณใช้คำบอกใบ้ทรัพยากร preconnect
เพื่อสร้างการเชื่อมต่อกับต้นทางของบุคคลที่สามตั้งแต่เนิ่นๆ คำแนะนำเกี่ยวกับทรัพยากรควรวางไว้ใน <head>
ของเอกสาร คำแนะนำแหล่งข้อมูลด้านล่างตั้งค่าการเชื่อมต่อสำหรับการโหลดสไตล์ชีต
<head>
<link rel="preconnect" href="https://fonts.com">
</head>
หากต้องการเชื่อมต่อการเชื่อมต่อที่ใช้ดาวน์โหลดไฟล์แบบอักษรไว้ล่วงหน้า ให้เพิ่มคำแนะนำทรัพยากร preconnect
แยกต่างหากที่ใช้แอตทริบิวต์ crossorigin
ไฟล์แบบอักษรต้องส่งผ่านการเชื่อมต่อ CORS ซึ่งแตกต่างจากสไตล์ชีต
<head>
<link rel="preconnect" href="https://fonts.com">
<link rel="preconnect" href="https://fonts.com" crossorigin>
</head>
เมื่อใช้คำแนะนำทรัพยากร preconnect
โปรดทราบว่าผู้ให้บริการแบบอักษรอาจแสดงสไตล์ชีตและแบบอักษรจากต้นทางแยกต่างหาก ตัวอย่างเช่น จะมีการใช้คำแนะนำทรัพยากร preconnect
สำหรับ Google Fonts
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
</head>
โปรดใช้ preload
เพื่อโหลดแบบอักษรด้วยความระมัดระวัง
แม้ว่า preload
จะมีประสิทธิภาพสูงในการทำให้ค้นพบแบบอักษรได้ตั้งแต่เนิ่นๆ ในกระบวนการโหลดหน้าเว็บ แต่ก็ต้องแลกมาด้วยการใช้ทรัพยากรของเบราว์เซอร์ไปกับการโหลดทรัพยากรอื่นๆ
การใส่การประกาศแบบอักษรในบรรทัดและปรับสไตล์ชีตอาจเป็นวิธีที่มีประสิทธิภาพมากกว่า การปรับเหล่านี้ช่วยให้เราเข้าใกล้การแก้ไขสาเหตุของแบบอักษรที่ค้นพบช้ากว่าได้มากขึ้น แทนที่จะเป็นเพียงการแก้ปัญหาเฉพาะหน้า
นอกจากนี้ คุณควรใช้ preload
เป็นกลยุทธ์การโหลดแบบอักษรอย่างระมัดระวังด้วย เนื่องจากจะข้ามกลยุทธ์การเจรจาต่อรองเนื้อหาในตัวบางกลยุทธ์ เช่น preload
จะไม่สนใจการประกาศ unicode-range
และหากใช้อย่างรอบคอบ ควรใช้เพื่อโหลดแบบอักษรรูปแบบเดียวเท่านั้น
อย่างไรก็ตาม เมื่อใช้สไตล์ชีตภายนอก การโหลดแบบอักษรที่สำคัญที่สุดไว้ล่วงหน้าจะมีประสิทธิภาพมาก เนื่องจากเบราว์เซอร์จะไม่ทราบว่าจำเป็นต้องใช้แบบอักษรหรือไม่จนกว่าจะถึงเวลาต่อมา
การส่งแบบอักษร
การส่งแบบอักษรที่เร็วขึ้นจะทำให้การแสดงผลข้อความเร็วขึ้น นอกจากนี้ หากมีการแสดงแบบอักษรเร็วพอ ก็จะช่วยลดการเปลี่ยนแปลงของเลย์เอาต์ที่เกิดจากการสลับแบบอักษรได้
การใช้แบบอักษรที่โฮสต์เอง
ในทางทฤษฎีแล้ว การใช้แบบอักษรที่โฮสต์เองควรมีประสิทธิภาพดีกว่าเนื่องจากจะช่วยลดการตั้งค่าการเชื่อมต่อกับบุคคลที่สาม อย่างไรก็ตาม ในทางปฏิบัติ ความแตกต่างด้านประสิทธิภาพระหว่าง 2 ตัวเลือกนี้ไม่ชัดเจนนัก เช่น Web Almanac พบว่าเว็บไซต์ที่ใช้แบบอักษรของบุคคลที่สามแสดงผลได้เร็วกว่าแบบอักษรของบุคคลที่หนึ่ง
หากกำลังพิจารณาใช้แบบอักษรที่โฮสต์เอง ให้ตรวจสอบว่าเว็บไซต์ของคุณใช้ เครือข่ายนำส่งข้อมูล (CDN) และ HTTP/2 หากไม่ใช้เทคโนโลยีเหล่านี้ โอกาสที่แบบอักษรที่โฮสต์เองจะมีประสิทธิภาพดีขึ้นจะน้อยลงมาก สำหรับข้อมูลเพิ่มเติม โปรดดูเครือข่ายการแสดงเนื้อหา
หากคุณใช้แบบอักษรที่โฮสต์เอง เราขอแนะนำให้ใช้การเพิ่มประสิทธิภาพไฟล์แบบอักษรบางอย่างที่ผู้ให้บริการแบบอักษรบุคคลที่สามมักให้โดยอัตโนมัติ เช่น การจำกัดชุดแบบอักษรและการบีบอัด WOFF2 ความพยายามที่จําเป็นในการใช้การเพิ่มประสิทธิภาพเหล่านี้จะขึ้นอยู่กับภาษาที่เว็บไซต์รองรับ โดยเฉพาะอย่างยิ่ง โปรดทราบว่าการเพิ่มประสิทธิภาพแบบอักษรสำหรับภาษา CJK อาจเป็นเรื่องยาก
ใช้ WOFF2
WOFF2 เป็นรูปแบบแบบอักษรสมัยใหม่ล่าสุดที่รองรับเบราว์เซอร์ได้กว้างที่สุดและมีการบีบอัดที่ดีที่สุด WOFF2 ใช้ Brotli ทำให้บีบอัดได้ดีกว่า WOFF ถึง 30% ทำให้ดาวน์โหลดข้อมูลน้อยลงและจึงทำงานได้รวดเร็วยิ่งขึ้น
ผู้เชี่ยวชาญจึงแนะนำให้ใช้ WOFF2 เท่านั้นเนื่องจากมีการรองรับในเบราว์เซอร์
อันที่จริง เราคิดว่าถึงเวลาแล้วที่จะต้องประกาศให้ทราบถึงการใช้ WOFF2 เท่านั้นและไม่ต้องลืมสิ่งอื่นเลย
Bram Stein จาก 2022 Web Almanac
วิธีนี้จะช่วยให้ CSS และเวิร์กโฟลว์ของคุณง่ายขึ้นมาก และยังป้องกันไม่ให้เกิดการดาวน์โหลดแบบอักษรซ้ำหรือไม่ถูกต้องโดยไม่ตั้งใจ ตอนนี้ระบบรองรับ WOFF2 ในทุกที่แล้ว ดังนั้นโปรดใช้ WOFF2 เว้นแต่ว่าคุณต้องการรองรับเบราว์เซอร์รุ่นเก่าจริงๆ หากทำไม่ได้ ให้พิจารณาไม่แสดงแบบอักษรเว็บในเบราว์เซอร์เวอร์ชันเก่าเหล่านั้นเลย ปัญหานี้จะไม่เกิดขึ้นหากคุณมีกลยุทธ์สำรองที่มีประสิทธิภาพ ผู้เข้าชมที่ใช้เบราว์เซอร์รุ่นเก่าจะเห็นเฉพาะแบบอักษรสำรอง
แบบอักษรชุดย่อย
ไฟล์แบบอักษรมักมีรูปอักขระจำนวนมากสำหรับอักขระต่างๆ ทั้งหมดที่ไฟล์รองรับ แต่คุณอาจไม่จำเป็นต้องใช้อักขระทั้งหมดในหน้าเว็บและสามารถลดขนาดไฟล์แบบอักษรได้โดยการเลือกแบบอักษรย่อย
ตัวบ่งชี้ unicode-range
ในประกาศ @font-face
จะแจ้งให้เบราว์เซอร์ทราบว่าแบบอักษรใช้กับอักขระใดได้บ้าง
@font-face {
font-family: "Open Sans";
src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
unicode-range: U+0025-00FF;
}
ระบบจะดาวน์โหลดไฟล์แบบอักษรหากหน้าเว็บมีอักขระอย่างน้อย 1 ตัวตรงกับช่วง Unicode unicode-range
มักใช้เพื่อแสดงไฟล์แบบอักษรที่แตกต่างกันตามภาษาที่เนื้อหาของหน้าเว็บใช้
unicode-range
มักใช้ร่วมกับเทคนิคการกรองข้อมูลย่อย แบบอักษรชุดย่อยประกอบด้วยอักขระจำนวนน้อยกว่าที่อยู่ในไฟล์แบบอักษรต้นฉบับ ตัวอย่างเช่น เว็บไซต์อาจสร้างแบบอักษรชุดย่อยแยกกันสำหรับอักขระละตินและซีริลลิกแทนที่จะแสดงอักขระทั้งหมดต่อผู้ใช้ทุกคน จำนวนแบบอักษรต่อแบบอักษรจะแตกต่างกันไปอย่างมาก โดยปกติแล้วแบบอักษรละตินจะมีแบบอักษรประมาณ 100-1,000 แบบ ส่วนแบบอักษร CJK อาจมีอักขระมากกว่า 10,000 ตัว การนําแบบอักษรที่ไม่ได้ใช้ออกจะช่วยลดขนาดไฟล์ของแบบอักษรได้อย่างมาก
ผู้ให้บริการแบบอักษรบางรายอาจจัดเตรียมไฟล์แบบอักษรเวอร์ชันต่างๆ ที่มีชุดย่อยที่แตกต่างกันโดยอัตโนมัติ ตัวอย่างเช่น Google Fonts จะดำเนินการต่อไปนี้โดยค่าเริ่มต้น
/* devanagari */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format('woff2');
unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
}
/* latin-ext */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
เมื่อเปลี่ยนไปใช้โฮสติ้งด้วยตนเอง การเพิ่มประสิทธิภาพนี้อาจถูกมองข้ามได้ง่ายและทำให้ไฟล์แบบอักษรในเครื่องมีขนาดใหญ่ขึ้น
นอกจากนี้ คุณยังแยกชุดย่อยของแบบอักษรด้วยตนเองได้หากผู้ให้บริการแบบอักษรอนุญาต ซึ่งทำได้ผ่าน API (Google Fonts รองรับการดำเนินการนี้โดยระบุพารามิเตอร์ text
) หรือแก้ไขไฟล์แบบอักษรด้วยตนเองแล้วโฮสต์ด้วยตนเอง เครื่องมือสำหรับสร้างชุดย่อยแบบอักษร ได้แก่ แบบอักษรย่อยและ glyphanger อย่างไรก็ตาม โปรดตรวจสอบใบอนุญาตสำหรับแบบอักษรที่คุณใช้อนุญาตการตั้งค่าย่อยและการโฮสต์ด้วยตนเอง
ใช้แบบอักษรบนเว็บน้อยลง
แบบอักษรที่เร็วที่สุดคือแบบอักษรที่ไม่ได้มีการขอตั้งแต่แรก แบบอักษรของระบบและแบบอักษรแบบผันแปรเป็น 2 วิธีในการลดจำนวนแบบอักษรเว็บที่ใช้ในเว็บไซต์
แบบอักษรของระบบคือแบบอักษรเริ่มต้นที่อินเทอร์เฟซผู้ใช้ของอุปกรณ์ของผู้ใช้ใช้ โดยปกติแล้วแบบอักษรของระบบจะแตกต่างกันไปตามระบบปฏิบัติการและเวอร์ชัน เนื่องจากมีการติดตั้งแบบอักษรไว้แล้ว จึงไม่จำเป็นต้องดาวน์โหลดแบบอักษร แบบอักษรของระบบทำงานได้ดีเป็นพิเศษกับข้อความเนื้อหา
หากต้องการใช้แบบอักษรของระบบใน CSS ให้ระบุ system-ui
เป็น font-family ดังนี้
font-family: system-ui
แนวคิดเบื้องหลังแบบอักษรแบบแปรผันคือการใช้แบบอักษรแบบแปรผันเพียงแบบเดียวแทนไฟล์แบบอักษรหลายไฟล์ แบบอักษรที่ปรับแต่งได้จะทำงานโดยกำหนดรูปแบบอักษร "เริ่มต้น" และระบุ "แกน" สำหรับการจัดการแบบอักษร ตัวอย่างเช่น คุณอาจใช้แบบอักษรแบบแปรผันที่มีแกน Weight
เพื่อใช้ตัวอักษรที่ก่อนหน้านี้ต้องใช้แบบอักษรแยกกันสำหรับแบบบาง แบบปกติ แบบหนา และแบบหนาพิเศษ
การเปลี่ยนไปใช้แบบอักษรแบบผันแปรอาจไม่เป็นประโยชน์สำหรับทุกคน แบบอักษรที่เปลี่ยนแปลงได้มีรูปแบบหลากหลาย ดังนั้นมักจะมีขนาดไฟล์ใหญ่กว่าแบบอักษรแบบไม่แปรผันแต่ละรายการที่มีเพียงรูปแบบเดียว เว็บไซต์ที่จะเห็นการปรับปรุงมากที่สุดจากการใช้แบบอักษรแบบผันแปรคือเว็บไซต์ที่ใช้ (และจำเป็นต้องใช้) รูปแบบและน้ำหนักแบบอักษรที่หลากหลาย
การแสดงแบบอักษร
เมื่อพบแบบอักษรเว็บที่ยังไม่ได้โหลด เบราว์เซอร์จะพบกับปัญหาว่าควรหยุดแสดงผลข้อความจนกว่าแบบอักษรเว็บจะมาถึงไหม หรือควรแสดงผลข้อความแบบอักษรสำรองจนกว่าแบบอักษรเว็บจะมาถึง
เบราว์เซอร์แต่ละรุ่นจะจัดการสถานการณ์นี้แตกต่างกัน โดยค่าเริ่มต้น เบราว์เซอร์ที่ใช้ Chromium และ Firefox จะบล็อกการแสดงผลข้อความได้สูงสุด 3 วินาทีหากเว็บแบบอักษรที่เกี่ยวข้องยังไม่ได้โหลด ส่วน Safari จะบล็อกการแสดงผลข้อความไว้อย่างไม่มีกำหนด
คุณกําหนดค่าลักษณะการทํางานนี้ได้โดยใช้แอตทริบิวต์ font-display
ตัวเลือกนี้อาจมีนัยสําคัญ font-display
มีแนวโน้มที่จะส่งผลต่อ LCP, FCP และความเสถียรของเลย์เอาต์
เลือกกลยุทธ์ font-display
ที่เหมาะสม
font-display
แจ้งให้เบราว์เซอร์ทราบถึงวิธีดำเนินการแสดงผลข้อความเมื่อเว็บแบบอักษรที่เชื่อมโยงยังไม่ได้โหลด โดยกำหนดตามแบบอักษร
@font-face {
font-family: Roboto, Sans-Serif
src: url(/fonts/roboto.woff) format('woff'),
font-display: swap;
}
font-display
มีค่าที่เป็นไปได้ 5 ค่า ดังนี้
ค่า | ระยะเวลาการบล็อก | ระยะเวลาการแลกเปลี่ยน |
---|---|---|
อัตโนมัติ | แตกต่างกันไปตามเบราว์เซอร์ | แตกต่างกันไปตามเบราว์เซอร์ |
บล็อก | 2-3 วินาที | ไม่สิ้นสุด |
สลับ | 0 มิลลิวินาที | ไม่สิ้นสุด |
Fallback | 100 มิลลิวินาที | 3 วินาที |
ไม่บังคับ | 100 มิลลิวินาที | ไม่มี |
- ระยะเวลาการบล็อก: ระยะเวลาการบล็อกจะเริ่มขึ้นเมื่อเบราว์เซอร์ขอแบบอักษรเว็บ ในระหว่างระยะเวลาการบล็อก หากไม่มีแบบอักษรเว็บ ระบบจะแสดงผลแบบอักษรเป็นแบบอักษรสำรองที่มองไม่เห็น ผู้ใช้จึงจะไม่เห็นข้อความ หากไม่มีแบบอักษรเมื่อสิ้นสุดระยะเวลาการบล็อก ระบบจะแสดงผลแบบอักษรดังกล่าวในรูปแบบอักษรสำรอง
- ระยะเวลาการแลกเปลี่ยน: ระยะเวลาการแลกเปลี่ยนจะตามหลังระยะเวลาการบล็อก หากเว็บแบบอักษรพร้อมใช้งานในช่วงเปลี่ยน จะมีการ "เปลี่ยน" เว็บแบบอักษรนั้น
font-display
กลยุทธ์ต่างๆ แสดงมุมมองที่แตกต่างกันเกี่ยวกับการแลกเปลี่ยนระหว่างประสิทธิภาพกับความสวยงาม ดังนั้น เราจึงไม่สามารถแนะนำแนวทางที่ชัดเจนได้ เนื่องจากขึ้นอยู่กับความชอบของแต่ละบุคคล ความสำคัญของแบบอักษรเว็บต่อหน้าเว็บและแบรนด์ และระดับความกระอักกระอ่วนของแบบอักษรที่โหลดมาช้าเมื่อสลับมาใช้
สำหรับเว็บไซต์ส่วนใหญ่ กลยุทธ์สามแบบที่ใช้ได้มากที่สุดมีดังนี้
หากประสิทธิภาพเป็นสิ่งสำคัญที่สุด: ให้ใช้
font-display: optional
วิธีนี้เป็นวิธีที่ "มีประสิทธิภาพ" มากที่สุด การแสดงผลข้อความจะล่าช้าไม่เกิน 100 มิลลิวินาที และมั่นใจได้ว่าจะไม่มีการเปลี่ยนแปลงเลย์เอาต์ที่เกี่ยวข้องกับการเปลี่ยนแบบอักษร อย่างไรก็ตาม ข้อเสียคือระบบจะไม่ใช้แบบอักษรเว็บหากส่งมาช้าหากการแสดงข้อความอย่างรวดเร็วเป็นสิ่งสำคัญที่สุด แต่คุณยังคงต้องการให้ใช้แบบอักษรในเว็บ ให้ใช้
font-display: swap
แต่อย่าลืมส่งแบบอักษรให้ทันเวลาเพื่อไม่ให้เลยเวลาในการแสดงผล ข้อเสียของตัวเลือกนี้คือการเปลี่ยนแปลงที่กระอักกระอ่วนเมื่อแบบอักษรมาถึงช้าหากการแสดงข้อความในแบบอักษรบนเว็บเป็นสิ่งสำคัญที่สุด ให้ใช้
font-display: block
แต่อย่าลืมส่งแบบอักษรให้ทันเวลาเพื่อลดเวลาในการโหลดข้อความ ข้อเสียก็คือการแสดงข้อความครั้งแรกจะล่าช้า โปรดทราบว่าแม้จะมีการเลื่อนการแสดงผลแล้ว แต่ก็ยังอาจทำให้เกิดการเปลี่ยนแปลงเลย์เอาต์ได้ เนื่องจากข้อความจะวาดขึ้นแบบมองไม่เห็น และระบบจะใช้พื้นที่ของแบบอักษรสำรองเพื่อจองพื้นที่ เมื่อโหลดแบบอักษรเว็บแล้ว อาจมีการใช้พื้นที่ที่แตกต่างกันและทำให้ต้องเลื่อน อย่างไรก็ตาม การแจ้งเตือนนี้อาจมีการเปลี่ยนแปลงน้อยกว่าfont-display: swap
เนื่องจากตัวข้อความเองจะไม่เห็นว่ามีการเปลี่ยนแปลง
นอกจากนี้ โปรดทราบว่าคุณใช้ทั้ง 2 วิธีร่วมกันได้ เช่น ใช้ font-display: swap
สำหรับการสร้างแบรนด์และองค์ประกอบอื่นๆ ในหน้าเว็บที่โดดเด่นทางสายตา ใช้ font-display: optional
สำหรับแบบอักษรที่ใช้ในเนื้อหา
ลดความแตกต่างระหว่างแบบอักษรสำรองกับแบบอักษรเว็บ
หากต้องการลดผลกระทบของ CLS คุณสามารถใช้แอตทริบิวต์ size-adjust
ใหม่ ดูข้อมูลเพิ่มเติมได้ที่บทความเกี่ยวกับ CSS size-adjust
ฟีเจอร์นี้เป็นฟีเจอร์ใหม่ล่าสุดในชุดเครื่องมือของเรา จึงมีความซับซ้อนและต้องใช้การดำเนินการด้วยตนเองอยู่บ้างในตอนนี้ แต่เราขอแนะนำให้ลองใช้และคอยติดตามการปรับปรุงเครื่องมือในอนาคต
บทสรุป
แบบอักษรเว็บยังเป็นจุดคอขวดของประสิทธิภาพ แต่เรามีตัวเลือกมากขึ้นเรื่อยๆ ที่ช่วยให้เราเพิ่มประสิทธิภาพเพื่อลดจุดคอขวดนี้ได้มากที่สุด