ในการเพิ่มรูปภาพลงไปในหน้าเว็บไซต์ของเราด้วย HTML จะใช้ tag ที่มีชื่อว่า <img> และมีการส่งพารามิเตอร์ชื่อว่า src เข้าไปใน tag เช่น
<img src=”elva-fairy-800w.jpg” alt=”Elva dressed as a fairy”>
แต่รู้หรือไม่ว่า เราสามารถปรับปรุงประสิทธิภาพของการโหลดหน้าเว็บไซต์อย่างมากด้วยการแก้ที่ tag img นี้
หากเคยเขียนเว็บไซต์ที่มี Responsive มาแล้วก็น่าจะทราบมาก่อนแล้วว่า จำเป็นต้องมีการเขียนโค้ด frontend ให้สามารถแสดงผลได้บนทุกอุปกรณ์ เช่นเดียวกับการทำ Responsive images ซึ่งมีจุดมุ่งหมายให้สามารถแสดงผลได้ในอุปกรณ์ที่หลากหลาย ด้วยการใช้ parameters ที่ชื่อว่า srcset และ size เข้ามาดังรูป
<img srcset=”elva-fairy-480w.jpg 480w,
elva-fairy-800w.jpg 800w”
sizes=”(max-width: 600px) 480px,
800px”
src=”elva-fairy-800w.jpg”
alt=”Elva dressed as a fairy”>
สำหรับส่วนประกอบของค่า parameter ที่ใส่เข้าไปใน srcset จะเป็นรูปแบบของ string ที่ประกอบด้วย
1. ชื่อไฟล์ของภาพในขนาดที่กำหนด
2. เว้นวรรค
3. ความกว้างที่แท้จริงของภาพในหน่วย px (เช่น 480w) แต่จะไม่ใช้หน่วยในรูปของ px และใช้ w แทน ซึ่งความกว้างนี้สามารถตรวจสอบได้โดยการ inspecting ไฟล์รูปภาพนั้น ๆ (หรือกด Cmd + I สำหรับ Mac)
4. เครื่องหมาย “,” จากนั้นตามด้วยรูปภาพที่เตรียมไว้สำหรับหน้าจอขนาดต่อไป
จากนั้นให้กำหนด parameter ชื่อ size ดังนี้
1. เงื่อนไขของอุปกรณ์ (เช่น (max-width: 600px)) หมายความว่า viewport มีความกว้างไม่เกิน 600pixels
2. เว้นวรรค
3. ความกว้างของช่องที่ภาพจะใส่เข้าไปหากเงื่อนไขในข้อ 1 เป็นจริง (เช่น 480px)
4. เครื่องหมาย “,” จากนั้นวนลูปในข้อ 1 ใหม่จนกว่าจะครบตามที่ต้องการ
ทีนี้เราจะมาดูในเรื่องของความประหยัด bandwidth กันว่าจะช่วยลดได้มากน้อยขนาดไหน จากเว็บไซต์ตัวอย่างสองแบบคือ แบบแรก ไม่ใช้ Responsive images และแบบที่สอง ใช้ Responsive images เมื่อวัดประสิทธิภาพของทั้งสองแบบด้วยหน้าจอขนาดใหญ่ (PC) จะเห็นได้ว่าไม่ต่างกัน
แบบไม่ Responsive
แบบ Responsive
แต่หากเทียบกันในอุปกรณ์ขนาดเล็ก จะเห็นได้ว่าขนาดของ bandwidth ที่ใช้ลดลงถึงเกือบ 10%
แบบไม่ Responsive
แบบ Responsive
เหตุผลก็เพราะการที่เราสั่งให้ tag img โหลดภาพที่มีความละเอียดเท่าที่จำเป็นนั่นเอง และถ้าลองคิดดูว่าในเว็บไซต์ตัวอย่างนี้มีรูปภาพเพียงแค่ 2 รูปภาพเท่านั้น ซึ่งหากนำเทคนิคนี้ไปใช้ในเว็บไซต์ที่มีรูปภาพเป็นจำนวนมาก ก็จะทำให้ลดการใช้ bandwidth ลงได้มากเลยทีเดียว
ผู้เขียน เธียรวิชญ์ สิริสาครสกุล
วันที่ 8 ตุลาคม พ.ศ.2564
อ้างอิง : https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images