นอกจากการกำจัดการดาวน์โหลดทรัพยากรที่ไม่จำเป็นแล้ว สิ่งที่ดีที่สุดที่คุณทำได้เพื่อปรับปรุงความเร็วในการโหลดหน้าเว็บคือการลดขนาดการดาวน์โหลดโดยรวมด้วยการเพิ่มประสิทธิภาพและบีบอัดทรัพยากรที่เหลือ
ข้อมูลเบื้องต้นเกี่ยวกับการบีบอัดข้อมูล
เมื่อตั้งค่าเว็บไซต์เพื่อหลีกเลี่ยงการดาวน์โหลดทรัพยากรที่ไม่ได้ใช้แล้ว ขั้นตอนถัดไปคือการบีบอัดทรัพยากรที่มีสิทธิ์ที่เหลือซึ่งเบราว์เซอร์ต้องดาวน์โหลด คุณเลือกใช้เทคนิคต่างๆ ได้มากมายตามประเภททรัพยากร เช่น ข้อความ รูปภาพ แบบอักษร และอื่นๆ ไม่ว่าจะเป็นเครื่องมือทั่วไปที่เปิดใช้ได้ในเว็บเซิร์ฟเวอร์ การเพิ่มประสิทธิภาพก่อนการประมวลผลสำหรับเนื้อหาบางประเภท และการเพิ่มประสิทธิภาพเฉพาะทรัพยากรที่ต้องใช้อินพุตจากนักพัฒนาซอฟต์แวร์
การมอบประสิทธิภาพที่ดีที่สุดต้องอาศัยการผสมผสานเทคนิคต่อไปนี้ทั้งหมด
- การบีบอัดคือกระบวนการเข้ารหัสข้อมูลโดยใช้บิตน้อยลง
- การกำจัดข้อมูลที่ไม่จำเป็นจะให้ผลลัพธ์ที่ดีที่สุดเสมอ
- เทคนิคและอัลกอริทึมการบีบอัดมีอยู่มากมายหลายแบบ
- คุณจะต้องใช้เทคนิคที่หลากหลายเพื่อให้ได้การบีบอัดที่ดีที่สุด
กระบวนการลดขนาดข้อมูลคือการบีบอัดข้อมูล หลายคนได้ร่วมกันพัฒนาอัลกอริทึม เทคนิค และการเพิ่มประสิทธิภาพเพื่อปรับปรุงอัตราส่วนการบีบอัด ความเร็วในการบีบอัด และหน่วยความจำที่อัลกอริทึมการบีบอัดต่างๆ ต้องใช้
การพูดคุยเรื่องการบีบอัดข้อมูลอย่างละเอียดนั้นอยู่นอกเหนือขอบเขตของคู่มือนี้ อย่างไรก็ตาม คุณควรทำความเข้าใจวิธีการทำงานของการบีบอัดในระดับสูง และเทคนิคที่คุณสามารถใช้เพื่อลดขนาดของเนื้อหาต่างๆ ที่หน้าเว็บต้องการ
เพื่อให้เห็นภาพหลักการสำคัญของเทคนิคเหล่านี้ ลองพิจารณากระบวนการเพิ่มประสิทธิภาพรูปแบบข้อความธรรมดาที่สร้างขึ้นสำหรับตัวอย่างนี้โดยเฉพาะ
# Below is a secret message, which consists of a set of headers in
# key-value format followed by a newline and the encrypted message.
format: secret-cipher
date: 08/25/16
AAAZZBBBBEEEMMM EEETTTAAA
- ข้อความอาจมีคำอธิบายประกอบที่กำหนดเอง ซึ่งบางครั้งเรียกว่าความคิดเห็น โดยจะมีคำนำหน้าเป็น "#" คำอธิบายประกอบไม่มีผลต่อความหมายของข้อความหรือลักษณะการทำงานของข้อความ
- ข้อความอาจมีส่วนหัว ซึ่งเป็นคู่คีย์-ค่า (คั่นด้วย
":"ในตัวอย่างก่อนหน้า) ที่ปรากฏที่จุดเริ่มต้นของข้อความ - ข้อความมีเพย์โหลดข้อความ
คุณจะทำอย่างไรเพื่อลดขนาดของข้อความก่อนหน้าซึ่งเริ่มต้นที่ 200 อักขระ
- ความคิดเห็นนี้น่าสนใจ แต่ไม่ส่งผลต่อความหมายของข้อความ โปรดนำออกเมื่อส่งข้อความ
- มีเทคนิคดีๆ ในการเข้ารหัสส่วนหัวอย่างมีประสิทธิภาพ ตัวอย่างเช่น หากคุณทราบว่าข้อความทั้งหมดมี "format" และ "date" คุณสามารถแปลงข้อความเหล่านั้นเป็นรหัสจำนวนเต็มแบบสั้นและส่งเฉพาะรหัสดังกล่าวได้ อย่างไรก็ตาม นั่นอาจไม่ใช่เรื่องจริง ดังนั้นจึงควรปล่อยไว้ก่อนในตอนนี้
- เพย์โหลดเป็นแบบข้อความเท่านั้น แม้ว่าเราจะไม่ทราบว่าเนื้อหาจริงๆ คืออะไร (ดูเหมือนว่าจะใช้
"secret-cipher") แต่การดูข้อความก็แสดงให้เห็นว่ามีความซ้ำซ้อนอยู่มาก แทนที่จะส่งตัวอักษรซ้ำๆ คุณสามารถนับจำนวนตัวอักษรที่ซ้ำกันและเข้ารหัสได้อย่างมีประสิทธิภาพมากขึ้น เช่น"AAA"จะกลายเป็น"3A"ซึ่งแสดงถึงลำดับของตัวอักษร A 3 ตัว
การรวมเทคนิคเหล่านี้เข้าด้วยกันจะให้ผลลัพธ์ดังต่อไปนี้
format: secret-cipher
date: 08/25/16
3A2Z4B3E3M 3E3T3A
ข้อความใหม่มีความยาว 56 อักขระ ซึ่งหมายความว่าคุณได้บีบอัดข้อความต้นฉบับลง 72% ซึ่งถือว่าลดลงอย่างมาก
นี่เป็นตัวอย่างง่ายๆ ที่แสดงให้เห็นว่าอัลกอริทึมการบีบอัดมีประสิทธิภาพในการลดขนาดการโอนของทรัพยากรแบบข้อความได้อย่างไร ในทางปฏิบัติ อัลกอริทึมการบีบอัดมีความซับซ้อนมากกว่าตัวอย่างก่อนหน้านี้มาก และในเว็บ อัลกอริทึมการบีบอัดสามารถใช้เพื่อลดเวลาในการดาวน์โหลดทรัพยากรได้อย่างมาก การบีบอัดเนื้อหาแบบข้อความช่วยให้หน้าเว็บใช้เวลาโหลดทรัพยากรน้อยลง ผู้ใช้จึงเห็นผลลัพธ์ของทรัพยากรเหล่านั้นได้เร็วกว่าการไม่บีบอัด
การลดขนาด: การประมวลผลล่วงหน้าและการเพิ่มประสิทธิภาพเฉพาะบริบท
เทคนิคแรกที่กล่าวถึงที่นี่คือการลดขนาด แม้ว่าการลดขนาดจะไม่ใช่อัลกอริทึมการบีบอัดที่เข้มงวด แต่ก็เป็นวิธีนำอักขระที่ไม่จำเป็นและซ้ำซ้อนที่ใช้ในซอร์สโค้ดออก เพื่อให้มนุษย์อ่านทรัพยากรได้ง่ายขึ้น อย่างไรก็ตาม ความสามารถในการอ่านนั้นไม่จำเป็นต่อการรักษาฟังก์ชันการทำงานของซอร์สโค้ดนั้นในเว็บไซต์เวอร์ชันที่ใช้งานจริง และอาจทำให้การโหลดทรัพยากรบนเว็บล่าช้า
การลดขนาดเป็นการเพิ่มประสิทธิภาพเฉพาะเนื้อหาประเภทหนึ่งที่สามารถลดขนาดของทรัพยากรที่ส่งได้อย่างมาก และเป็นการเพิ่มประสิทธิภาพที่ใช้เป็นส่วนหนึ่งของกระบวนการสร้างและทำให้ใช้งานได้ดีที่สุด ตัวอย่างเช่น Bundler เป็นซอฟต์แวร์ประเภทที่ใช้กันโดยทั่วไปซึ่งสามารถลดขนาดทรัพยากรได้โดยอัตโนมัติก่อนที่จะติดตั้งใช้งานโค้ดเวอร์ชันที่ใช้งานจริงใหม่ในเว็บไซต์
วิธีที่ดีที่สุดในการบีบอัดข้อมูลที่ซ้ำซ้อนหรือไม่จำเป็นคือการกำจัดข้อมูลดังกล่าว แต่คุณจะลบข้อมูลตามใจชอบไม่ได้ อย่างไรก็ตาม ในบางบริบทที่เรามีความรู้เฉพาะเนื้อหาเกี่ยวกับรูปแบบข้อมูลและพร็อพเพอร์ตี้ของข้อมูล เราสามารถลดขนาดเพย์โหลดลงได้อย่างมากโดยไม่ส่งผลต่อความหมายหรือความสามารถที่แท้จริง
<html>
<head>
<style>
/* awesome-container is only used on the landing page */
.awesome-container {
font-size: 120%;
}
.awesome-container {
width: 50%;
}
</style>
</head>
<body>
<!-- awesome container content: START -->
<div>
This is my awesome container, and it is <em>so</em> awesome.
</div>
<!-- awesome container content: END -->
<script>
awesomeAnalytics(); // Beacon conversion metrics
</script>
</body>
</html>
พิจารณาข้อมูลโค้ด HTML ก่อนหน้าและเนื้อหา 3 ประเภทที่แตกต่างกันซึ่งมีดังนี้
- มาร์กอัป HTML
- CSS เพื่อปรับแต่งการนำเสนอของหน้าเว็บ
- JavaScript เพื่อขับเคลื่อนการโต้ตอบและความสามารถขั้นสูงอื่นๆ ของหน้าเว็บ
เนื้อหาแต่ละประเภทมีกฎที่แตกต่างกันสำหรับสิ่งที่ถือว่าเป็นเนื้อหาที่ถูกต้อง กฎที่แตกต่างกันสำหรับการระบุความคิดเห็น และอื่นๆ อย่างไรก็ตาม คำถามที่ยังคงอยู่คือ "จะลดขนาดของหน้านี้ได้อย่างไร"
- ความคิดเห็นในโค้ดเป็นเพื่อนที่ดีที่สุดของนักพัฒนาซอฟต์แวร์ แต่เบราว์เซอร์ไม่จำเป็นต้องใช้ความคิดเห็นเหล่านั้น การตัดความคิดเห็น CSS (
/* ... */), HTML (<!-- ... -->) และ JavaScript (// ...) จะช่วยลดขนาดการโอนทั้งหมดของหน้าเว็บและทรัพยากรย่อยของหน้าเว็บ - เครื่องมือบีบอัด CSS "อัจฉริยะ" อาจสังเกตเห็นว่าเราใช้วิธีที่ไม่มีประสิทธิภาพในการกำหนดกฎสำหรับ
.awesome-containerและยุบการประกาศทั้ง 2 รายการให้เหลือเพียงรายการเดียวโดยไม่ส่งผลกระทบต่อสไตล์อื่นๆ ซึ่งช่วยประหยัดไบต์ได้มากขึ้น ในกฎ CSS ชุดใหญ่ การนำความซ้ำซ้อนประเภทนี้ออกอาจเพิ่มขึ้น แต่ก็อาจไม่ใช่สิ่งที่นำไปใช้อย่างจริงจังได้ เนื่องจากตัวเลือกมักจะซ้ำกันในบริบทต่างๆ เช่น ภายในคำค้นหาสื่อ - เว้นวรรคและแท็บเป็นสิ่งที่ช่วยอำนวยความสะดวกให้นักพัฒนาซอฟต์แวร์ใน HTML, CSS และ JavaScript คอมเพรสเซอร์เพิ่มเติมอาจตัดแท็บและช่องว่างทั้งหมดออก การเพิ่มประสิทธิภาพประเภทนี้สามารถนำไปใช้ได้อย่างค่อนข้างเข้มงวด ซึ่งต่างจากเทคนิคการกรองข้อมูลที่ซ้ำกันออกอื่นๆ ตราบใดที่ช่องว่างหรือแท็บดังกล่าวไม่จำเป็นสำหรับการนำเสนอของหน้าเว็บ เช่น คุณอาจต้องการคงช่องว่างภายในข้อความที่ต่อเนื่องกันในเอกสาร HTML ไว้ เนื่องจากช่องว่างเหล่านี้ช่วยให้อ่านเนื้อหาที่ผู้ใช้จะเห็นได้จริง
<html><head><style>.awesome-container{font-size:120%;width:50%}</style></head><body><div>This is my awesome container, and it is <em>so</em> awesome.</div><script>awesomeAnalytics()</script></body></html>
หลังจากใช้ขั้นตอนก่อนหน้า หน้าเว็บจะลดลงจาก 516 อักขระเหลือ 204 อักขระ ซึ่งช่วยประหยัดได้ประมาณ 60% แม้ว่าอาจจะอ่านยากไปหน่อย แต่ก็ไม่จำเป็นต้องอ่านง่ายเพื่อที่จะใช้งานได้ นอกจากนี้ แนวทางปฏิบัติในการพัฒนาสมัยใหม่ยังช่วยให้คุณเก็บซอร์สโค้ดเวอร์ชันที่จัดรูปแบบอย่างดีและอ่านง่ายแยกจากโค้ดที่เพิ่มประสิทธิภาพอย่างดีซึ่งคุณส่งไปยังเวอร์ชันที่ใช้งานจริงได้ด้วย เมื่อใช้ร่วมกับแผนที่แหล่งที่มา ซึ่งแสดงโค้ดเวอร์ชันที่ใช้งานจริงที่แปลงแล้วในรูปแบบที่อ่านได้ ช่วยให้คุณแก้ปัญหาข้อบกพร่องในเวอร์ชันที่ใช้งานจริงได้ง่ายขึ้น คุณจะได้รับทั้งประสบการณ์ที่ดีสำหรับนักพัฒนาซอฟต์แวร์และเพิ่มประสิทธิภาพเพื่อประสบการณ์ของผู้ใช้
ตัวอย่างก่อนหน้านี้แสดงให้เห็นประเด็นสำคัญอย่างหนึ่ง นั่นคือคอมเพรสเซอร์อเนกประสงค์ เช่น คอมเพรสเซอร์ที่ออกแบบมาเพื่อบีบอัดข้อความที่กำหนดเอง สามารถบีบอัดหน้าเว็บในตัวอย่างก่อนหน้านี้ได้ค่อนข้างดี แต่จะไม่ทราบว่าต้องตัดความคิดเห็น ยุบกฎ CSS หรือการเพิ่มประสิทธิภาพเฉพาะเนื้อหาอื่นๆ อีกหลายสิบรายการ ด้วยเหตุนี้ การประมวลผลล่วงหน้า การลดขนาด และการเพิ่มประสิทธิภาพอื่นๆ ที่คำนึงถึงบริบทจึงมีความสำคัญ
ในทำนองเดียวกัน เทคนิคที่อธิบายไว้ข้างต้นสามารถนำไปใช้ได้มากกว่าแค่ชิ้นงานแบบข้อความ รูปภาพ วิดีโอ และเนื้อหาประเภทอื่นๆ ล้วนมีรูปแบบข้อมูลเมตาและเพย์โหลดที่หลากหลายของตนเอง ตัวอย่างเช่น เมื่อใดก็ตามที่คุณถ่ายภาพด้วยกล้อง ไฟล์ภาพมักจะฝังข้อมูลเพิ่มเติมจำนวนมาก เช่น การตั้งค่ากล้อง สถานที่ และอื่นๆ ข้อมูลนี้อาจมีความสำคัญ (เช่น เว็บไซต์แชร์รูปภาพ) หรืออาจไม่มีประโยชน์เลย ทั้งนี้ขึ้นอยู่กับแอปพลิเคชันของคุณ คุณควรพิจารณาว่าคุ้มค่าที่จะนำออกหรือไม่ ในทางปฏิบัติ ข้อมูลเมตานี้อาจเพิ่มขนาดรูปภาพได้ถึงหลายสิบกิโลไบต์ต่อรูปภาพ
กล่าวโดยสรุปคือ ขั้นตอนแรกในการเพิ่มประสิทธิภาพของเนื้อหาคือการสร้างคลังเนื้อหาประเภทต่างๆ และพิจารณาว่าคุณสามารถใช้การเพิ่มประสิทธิภาพเฉพาะเนื้อหาประเภทใดเพื่อลดขนาดได้ จากนั้น หลังจากที่คุณทราบแล้วว่าการเพิ่มประสิทธิภาพเหล่านั้นคืออะไร ให้ทำให้การเพิ่มประสิทธิภาพเหล่านี้เป็นแบบอัตโนมัติโดยเพิ่มลงในขั้นตอนการสร้างและเผยแพร่ เพื่อให้มั่นใจว่าการเพิ่มประสิทธิภาพจะได้รับการนำไปใช้อย่างสม่ำเสมอสำหรับทุกๆ รุ่นใหม่ที่เผยแพร่สู่เวอร์ชันที่ใช้งานจริง
การบีบอัดข้อความด้วยอัลกอริทึมการบีบอัด
ขั้นตอนถัดไปในการลดขนาดชิ้นงานแบบข้อความคือการใช้อัลกอริทึมการบีบอัดกับชิ้นงานเหล่านั้น ซึ่งจะดำเนินการขั้นต่อไปโดยการค้นหารูปแบบที่ซ้ำกันในเพย์โหลดแบบข้อความอย่างเข้มงวดก่อนที่จะส่งไปยังผู้ใช้ และคลายการบีบอัดเมื่อเพย์โหลดมาถึงเบราว์เซอร์ของผู้ใช้ ผลลัพธ์ที่ได้คือการลดทรัพยากรเหล่านั้นลงอย่างมาก และทำให้ดาวน์โหลดได้เร็วขึ้นในเวลาต่อมา
- gzip และ Brotli เป็นอัลกอริทึมการบีบอัดที่ใช้กันโดยทั่วไปซึ่งทำงานได้ดีที่สุดกับชิ้นงานแบบข้อความ เช่น CSS, JavaScript, HTML
- เบราว์เซอร์ที่ทันสมัยทั้งหมดรองรับการบีบอัด gzip และ Brotli และจะโฆษณาการรองรับทั้ง 2 อย่างในส่วนหัวของคำขอ HTTP
Accept-Encoding - คุณต้องกำหนดค่าเซิร์ฟเวอร์เพื่อเปิดใช้การบีบอัด ซอฟต์แวร์ของเซิร์ฟเวอร์มักจะเปิดใช้โมดูลเพื่อบีบอัดทรัพยากรแบบข้อความโดยค่าเริ่มต้น
- ทั้ง gzip และ Brotli สามารถปรับแต่งเพื่อปรับปรุงอัตราส่วนการบีบอัดได้โดยการปรับระดับการบีบอัด สำหรับการบีบอัด gzip การตั้งค่าการบีบอัดจะอยู่ในช่วง 1 ถึง 9 โดย 9 คือการบีบอัดที่ดีที่สุด สำหรับ Brotli ช่วงนี้คือ 0 ถึง 11 โดย 11 คือดีที่สุด อย่างไรก็ตาม การตั้งค่าการบีบอัดที่สูงขึ้นจะใช้เวลามากขึ้น สำหรับทรัพยากรที่บีบอัดแบบไดนามิก (นั่นคือ ณ เวลาที่มีคำขอ) การตั้งค่าที่อยู่ตรงกลางของช่วงมักจะให้ผลลัพธ์ที่ดีที่สุดระหว่างอัตราส่วนการบีบอัดและความเร็ว อย่างไรก็ตาม คุณสามารถใช้การบีบอัดแบบคงที่ได้ ซึ่งเป็นการบีบอัดการตอบกลับล่วงหน้า จึงสามารถใช้การตั้งค่าการบีบอัดที่เข้มงวดที่สุดที่มีอยู่สำหรับอัลกอริทึมการบีบอัดแต่ละรายการได้
- เครือข่ายนำส่งข้อมูล (CDN) มักจะมีการบีบอัดทรัพยากรที่มีคุณสมบัติตรงตามเกณฑ์โดยอัตโนมัติ นอกจากนี้ CDN ยังจัดการการบีบอัดแบบไดนามิกและแบบคงที่ให้คุณได้ด้วย ซึ่งจะช่วยลดความกังวลเกี่ยวกับการบีบอัดได้อีก 1 ด้าน
gzip และ Brotli เป็นคอมเพรสเซอร์ทั่วไปที่ใช้กับสตรีมไบต์ได้ โดยเบื้องหลังจะจดจำเนื้อหาบางส่วนที่ตรวจสอบก่อนหน้านี้ของไฟล์ และพยายามค้นหาและแทนที่ส่วนข้อมูลที่ซ้ำกันอย่างมีประสิทธิภาพในภายหลัง
ในทางปฏิบัติ ทั้ง gzip และ Brotli ทำงานได้ดีที่สุดกับเนื้อหาแบบข้อความ โดยมักจะบีบอัดไฟล์ขนาดใหญ่ได้สูงถึง 70-90% อย่างไรก็ตาม การเรียกใช้อัลกอริทึมเหล่านี้กับเนื้อหาที่บีบอัดแล้วโดยใช้อัลกอริทึมอื่น เช่น รูปแบบรูปภาพส่วนใหญ่ที่ใช้เทคนิคการบีบอัดแบบไม่สูญเสียรายละเอียดหรือแบบสูญเสียบางส่วน จะช่วยปรับปรุงได้เพียงเล็กน้อยหรือไม่ได้เลย
เบราว์เซอร์ที่ทันสมัยทั้งหมดจะโฆษณาการรองรับ gzip และ Brotli ในส่วนหัวของคำขอ HTTP Accept-Encoding อย่างไรก็ตาม ผู้ให้บริการโฮสติ้งมีหน้าที่ตรวจสอบว่าเว็บเซิร์ฟเวอร์ได้รับการกำหนดค่าอย่างถูกต้องเพื่อแสดงทรัพยากรที่บีบอัดเมื่อไคลเอ็นต์ส่งคำขอ
| ไฟล์ | อัลกอริทึม | ขนาดที่ไม่ได้บีบอัด | ขนาดไฟล์ที่บีบอัด | อัตราส่วนการบีบอัด |
|---|---|---|---|---|
| angular-1.8.3.js | Brotli | 1,346 KiB | 256 KiB | 81% |
| angular-1.8.3.js | gzip | 1,346 KiB | 329 KiB | 76% |
| angular-1.8.3.min.js | Brotli | 173 KiB | 53 KiB | 69% |
| angular-1.8.3.min.js | gzip | 173 KiB | 60 KiB | 65% |
| jquery-3.7.1.js | Brotli | 302 KiB | 69 KiB | 77% |
| jquery-3.7.1.js | gzip | 302 KiB | 83 KiB | 73% |
| jquery-3.7.1.min.js | Brotli | 85 KiB | 27 KiB | 68% |
| jquery-3.7.1.min.js | gzip | 85 KiB | 30 KiB | 65% |
| lodash-4.17.21.js | Brotli | 531 KiB | 73 KiB | 86% |
| lodash-4.17.21.js | gzip | 531 KiB | 94 KiB | 82% |
| lodash-4.17.21.min.js | Brotli | 71 KiB | 23 KiB | 68% |
| lodash-4.17.21.min.js | gzip | 71 KiB | 25 KiB | 65% |
ตารางก่อนหน้านี้แสดงการประหยัดที่ทั้งการบีบอัด Brotli และ gzip สามารถทำได้สำหรับไลบรารี JavaScript ที่เป็นที่รู้จักบางรายการ โดยประหยัดได้ตั้งแต่ 65% ถึง 86% ขึ้นอยู่กับไฟล์และอัลกอริทึม สำหรับการอ้างอิง ระบบจะใช้ระดับการบีบอัดสูงสุดกับแต่ละไฟล์สำหรับทั้ง Brotli และ gzip หากเป็นไปได้ ให้ใช้ Brotli แทน gzip
การเปิดใช้การบีบอัดเป็นหนึ่งในการเพิ่มประสิทธิภาพที่ง่ายและมีประสิทธิภาพที่สุดในการนำไปใช้ หากเว็บไซต์ของคุณไม่ได้ใช้ประโยชน์จากฟีเจอร์นี้ แสดงว่าคุณกำลังพลาดโอกาสครั้งสำคัญในการปรับปรุงประสิทธิภาพสำหรับผู้ใช้ โชคดีที่เว็บเซิร์ฟเวอร์จำนวนมากมีการกำหนดค่าเริ่มต้นที่เปิดใช้การเพิ่มประสิทธิภาพที่สำคัญนี้ และ CDN มีประสิทธิภาพอย่างยิ่งในการนำไปใช้ในลักษณะที่สมดุลระหว่างความเร็วและอัตราส่วนการบีบอัด
วิธีที่รวดเร็วในการดูการบีบอัดที่ทำงานอยู่คือเปิดเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome, เปิดแผงเครือข่าย, โหลดหน้าเว็บที่คุณเลือก และสังเกตด้านล่างสุดของแผงเครือข่าย
คุณควรเห็นรายละเอียดต่อไปนี้เหมือนกับรูปภาพก่อนหน้า
- จำนวนคำขอ ซึ่งเป็นจำนวนทรัพยากรที่โหลดสำหรับหน้าเว็บ
- ขนาดการโอนของคำขอทั้งหมด ซึ่งแสดงถึงประสิทธิภาพของการบีบอัดที่ใช้กับทรัพยากรของหน้าเว็บ
- ขนาดทรัพยากรของคำขอทั้งหมด ซึ่งแสดงให้เห็นว่าทรัพยากรสำหรับหน้าเว็บมีขนาดใหญ่เพียงใดหลังจากที่คลายการบีบอัดแล้ว
ผลกระทบต่อ Core Web Vitals
คุณจะวัดการปรับปรุงประสิทธิภาพไม่ได้หากไม่มีเมตริกที่แสดงถึงการปรับปรุงเหล่านั้น โครงการริเริ่ม Core Web Vitals มีขึ้นเพื่อสร้างและเพิ่มการรับรู้เกี่ยวกับเมตริกที่สะท้อนถึงประสบการณ์ของผู้ใช้จริง ซึ่งแตกต่างจากเมตริก เช่น เวลาในการโหลดหน้าเว็บแบบง่ายๆ ที่ไม่ได้แสดงถึงคุณภาพของประสบการณ์ของผู้ใช้อย่างชัดเจน
เมื่อใช้การเพิ่มประสิทธิภาพที่ระบุไว้ในคู่มือนี้กับทรัพยากรในเว็บไซต์ ผลกระทบต่อ Core Web Vitals อาจแตกต่างกันไปตามทรัพยากรที่เพิ่มประสิทธิภาพและเมตริกที่เกี่ยวข้อง อย่างไรก็ตาม ต่อไปนี้เป็นตัวอย่างบางส่วนที่การใช้การเพิ่มประสิทธิภาพเหล่านี้จะช่วยปรับปรุง Core Web Vitals ของเว็บไซต์ได้
- ทรัพยากร HTML ที่ลดขนาดและบีบอัดจะช่วยปรับปรุงการโหลด HTML ดังกล่าว รวมถึงการค้นพบทรัพยากรย่อยของ HTML นั้นๆ ซึ่งจะช่วยปรับปรุงการโหลดทรัพยากรย่อยเหล่านั้นด้วย ซึ่งจะเป็นประโยชน์ต่อ Largest Contentful Paint (LCP) ของหน้าเว็บ แม้ว่าคุณจะใช้คำแนะนำเกี่ยวกับทรัพยากร เช่น
rel="preload"เพื่อส่งผลต่อการค้นพบทรัพยากรได้ แต่การใช้คำแนะนำมากเกินไปอาจทำให้เกิดปัญหาเกี่ยวกับการแย่งชิงแบนด์วิดท์ การตรวจสอบว่าการตอบกลับ HTML สำหรับคำขอการนำทางได้รับการบีบอัดจะช่วยให้เครื่องมือสแกนการโหลดล่วงหน้าค้นพบทรัพยากรภายในคำขอเหล่านั้นได้เร็วที่สุด - นอกจากนี้ องค์ประกอบที่เป็นไปได้ของ LCP บางรายการยังโหลดได้เร็วขึ้นโดยใช้การบีบอัด ตัวอย่างเช่น รูปภาพ SVG ที่เป็นตัวเลือก LCP สามารถลดระยะเวลาการโหลดทรัพยากรได้ผ่านการบีบอัดแบบข้อความ ซึ่งแตกต่างจากการเพิ่มประสิทธิภาพที่คุณจะทำกับรูปภาพประเภทอื่นๆ ซึ่งมีการบีบอัดโดยเนื้อแท้ผ่านวิธีการบีบอัดอื่นๆ เช่น วิธีที่รูปภาพ JPEG ใช้การบีบอัดแบบสูญเสียบางส่วน
- นอกจากนี้ โหนดข้อความยังเป็นตัวเลือก LCP ได้ด้วย วิธีการใช้เทคนิคที่อธิบายไว้ในคู่มือนี้ขึ้นอยู่กับว่าคุณใช้แบบอักษรเว็บสำหรับข้อความในหน้าเว็บหรือไม่ หากคุณใช้แบบอักษรบนเว็บ ให้ใช้แนวทางปฏิบัติแนะนำในการเพิ่มประสิทธิภาพแบบอักษรบนเว็บ อย่างไรก็ตาม หากคุณไม่ได้ใช้แบบอักษรบนเว็บ แต่ใช้แบบอักษรของระบบที่แสดงโดยไม่ทำให้เกิดระยะเวลาการโหลดทรัพยากร การลดขนาดและการบีบอัด CSS จะช่วยลดระยะเวลานี้ ซึ่งหมายความว่าการแสดงผลโหนดข้อความ LCP ที่เป็นไปได้จะเกิดขึ้นเร็วขึ้น
บทสรุป
วิธีเพิ่มประสิทธิภาพการเข้ารหัสและการโอนเนื้อหาแบบข้อความเป็นแนวคิดด้านประสิทธิภาพพื้นฐาน แต่ก็มีผลกระทบอย่างมาก ตรวจสอบว่าคุณได้ทำทุกอย่างที่ทำได้เพื่อให้ทรัพยากรที่มีสิทธิ์สำหรับการลดขนาดและการบีบอัดได้รับประโยชน์จากการเพิ่มประสิทธิภาพเหล่านั้น
และที่สำคัญกว่านั้นคือต้องตรวจสอบว่ากระบวนการเหล่านี้เป็นแบบอัตโนมัติ สำหรับการลดขนาด ให้ใช้ Bundler เพื่อใช้การลดขนาดกับทรัพยากรที่มีสิทธิ์ ตรวจสอบว่าการกำหนดค่าเว็บเซิร์ฟเวอร์รองรับการบีบอัด แต่ยิ่งไปกว่านั้น ให้ใช้การบีบอัดที่มีประสิทธิภาพมากที่สุด เพื่อให้การดำเนินการนี้เป็นเรื่องง่ายที่สุด ให้ใช้ CDN เพื่อบีบอัดโดยอัตโนมัติ เนื่องจาก CDN ไม่เพียงแต่บีบอัดทรัพยากรให้คุณได้เท่านั้น แต่ยังทำได้อย่างรวดเร็วอีกด้วย
การรวมแนวคิดด้านประสิทธิภาพพื้นฐานเหล่านี้ไว้ในสถาปัตยกรรมของเว็บไซต์จะช่วยให้มั่นใจได้ว่าความพยายามในการเพิ่มประสิทธิภาพจะดำเนินไปอย่างราบรื่น และการเพิ่มประสิทธิภาพในภายหลังจะอาศัยแนวทางปฏิบัติพื้นฐานที่ดี