ประสิทธิภาพของรูปภาพ

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

คุณเพิ่มรูปภาพลงในหน้าเว็บได้โดยใช้องค์ประกอบ <img> หรือ <picture> หรือพร็อพเพอร์ตี้ background-image ของ CSS

Image size

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

อย่างไรก็ตาม มีตัวแปรมากมายที่เกี่ยวข้องกับการเลือกขนาดรูปภาพที่เหมาะสม ซึ่งทำให้การเลือกขนาดรูปภาพที่เหมาะสมในทุกกรณีเป็นเรื่องที่ค่อนข้างซับซ้อน ในปี 2010 เมื่อ iPhone 4 วางจำหน่าย ความละเอียดหน้าจอ (640x960) เป็น 2 เท่าของ iPhone 3 (320x480) แต่ขนาดจริงของหน้าจอ iPhone 4 ยังใกล้เคียงกับ iPhone 3 พอๆ กับ iPhone 3

การแสดงทุกอย่างที่ความละเอียดสูงกว่าจะทำให้ข้อความและรูปภาพมีขนาดเล็กลงมาก เมื่อลดขนาดลงครึ่งหนึ่งของขนาดก่อนหน้านี้ แต่ 1 พิกเซลจะกลายเป็น 2 พิกเซลของอุปกรณ์ ซึ่งเรียกว่าอัตราส่วนพิกเซลของอุปกรณ์ (DPR) iPhone 4 และ iPhone หลายๆ รุ่นที่เปิดตัวหลังจากนั้นมี DPR เท่ากับ 2

ดูตัวอย่างก่อนหน้านี้ หากอุปกรณ์มี DPR เป็น 2 และรูปภาพแสดงในคอนเทนเนอร์ขนาด 500 x 500 พิกเซล จากนั้นรูปภาพสี่เหลี่ยมจัตุรัสขนาด 1,000 พิกเซล (หรือที่เรียกว่าขนาดภายใน) จะเป็นขนาดที่เหมาะสมที่สุดแล้ว ในทำนองเดียวกัน หากอุปกรณ์มี DPR เท่ากับ 3 รูปภาพสี่เหลี่ยมจัตุรัสขนาด 1,500 พิกเซลจะเป็นขนาดที่เหมาะสมที่สุด

srcset

องค์ประกอบ <img> รองรับแอตทริบิวต์ srcset ซึ่งช่วยให้คุณระบุรายการแหล่งที่มาของรูปภาพที่เป็นไปได้ซึ่งเบราว์เซอร์อาจใช้ แหล่งที่มาของรูปภาพแต่ละแหล่งที่ระบุ ต้องมี URL ของรูปภาพและข้อบ่งชี้ความกว้างหรือความหนาแน่นของพิกเซล

<img
  alt="An image"
  width="500"
  height="500"
  src="/image-500.jpg"
  srcset="/image-500.jpg 1x, /image-1000.jpg 2x, /image-1500.jpg 3x"
>

ข้อมูลโค้ด HTML ก่อนหน้านี้ใช้ข้อบ่งชี้ความหนาแน่นของพิกเซลในการบอกใบ้ให้เบราว์เซอร์ใช้ image-500.png ในอุปกรณ์ที่มี DPR เป็น 1, image-1000.jpg ในอุปกรณ์ที่มี DPR เท่ากับ 2 และ image-1500.jpg ในอุปกรณ์ที่มี DPR เท่ากับ 3

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

sizes

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

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

<img
  alt="An image"
  width="500"
  height="500"
  src="/image-500.jpg"
  srcset="/image-500.jpg 500w, /image-1000.jpg 1000w, /image-1500.jpg 1500w"
  sizes="(min-width: 768px) 500px, 100vw"
>

ในข้อมูลโค้ด HTML ก่อนหน้า แอตทริบิวต์ srcset จะระบุรายการตัวเลือกรูปภาพที่เบราว์เซอร์สามารถเลือกได้ โดยคั่นด้วยเครื่องหมายจุลภาค แต่ละคำที่รอพิจารณาในรายการประกอบด้วย URL ของรูปภาพ ตามด้วยไวยากรณ์ที่แสดงความกว้างที่แท้จริงของรูปภาพ ขนาดภายในของรูปภาพคือขนาด เช่น ตัวบ่งชี้ของ 1000w หมายความว่าความกว้างที่แท้จริงของรูปภาพมีความกว้าง 1, 000 พิกเซล

เมื่อใช้ข้อมูลนี้ เบราว์เซอร์จะประเมินเงื่อนไขของสื่อในแอตทริบิวต์ sizes และในกรณีนี้จะได้รับคำสั่งว่าหากความกว้างของวิวพอร์ตของอุปกรณ์เกิน 768 พิกเซล รูปภาพจะแสดงเป็นความกว้าง 500 พิกเซล ในอุปกรณ์ขนาดเล็ก รูปภาพจะแสดงเป็น 100vw หรือความกว้างเต็มวิวพอร์ต

จากนั้นเบราว์เซอร์จะรวมข้อมูลนี้กับรายการแหล่งที่มาของรูปภาพ srcset เพื่อหารูปภาพที่ดีที่สุด เช่น หากผู้ใช้ใช้อุปกรณ์เคลื่อนที่ที่มีความกว้างหน้าจอ 320 พิกเซลโดยมี DPR เท่ากับ 3 รูปภาพจะแสดงที่ 320 CSS pixels x 3 DPR = 960 device pixels ในตัวอย่างนี้ รูปภาพขนาดที่ใกล้เคียงที่สุดคือ image-1000.jpg ซึ่งมีความกว้างที่แท้จริง 1, 000 พิกเซล (1000w)

รูปแบบไฟล์

เบราว์เซอร์รองรับไฟล์ภาพหลายรูปแบบ รูปแบบรูปภาพที่ทันสมัย เช่น WebP และ AVIF อาจบีบอัดได้ดีกว่า PNG หรือ JPEG ทำให้ขนาดไฟล์รูปภาพเล็กลงและใช้เวลาในการดาวน์โหลดน้อยลง การแสดงรูปภาพในรูปแบบสมัยใหม่ช่วยให้คุณลดเวลาในการโหลดของทรัพยากรได้ ซึ่งอาจส่งผลให้ Largest Contentful Paint (LCP) ลดลง

WebP เป็นรูปแบบที่รองรับอย่างกว้างขวางและทำงานได้ในเบราว์เซอร์สมัยใหม่ทั้งหมด WebP มักมีการบีบอัดดีกว่า JPEG, PNG หรือ GIF ซึ่งให้ทั้งไฟล์แบบสูญเสียข้อมูลและการบีบอัดแบบไม่สูญเสียข้อมูล นอกจากนี้ WebP ยังรองรับความโปร่งใสของช่องอัลฟ่าแม้ว่าจะใช้การบีบอัดแบบสูญเสียบางส่วน ซึ่งเป็นฟีเจอร์ที่ตัวแปลงรหัส JPEG ไม่มี

AVIF เป็นรูปแบบรูปภาพที่ใหม่กว่าและถึงแม้ว่าจะไม่ได้รับการสนับสนุนอย่างกว้างขวางเท่ากับ WebP แต่ก็ได้รับการสนับสนุนที่สมเหตุสมผลในเบราว์เซอร์ต่างๆ AVIF รองรับทั้งการบีบอัดแบบสูญเสียและไม่สูญเสียข้อมูล และการทดสอบพบว่าประหยัดได้มากกว่า 50% เมื่อเปรียบเทียบกับ JPEG ในบางกรณี AVIF ยังมีฟีเจอร์ wide Color Gamut (WCG) และ High Dynamic Range (HDR)

การบีบอัด

หากเกี่ยวข้องกับรูปภาพ การบีบอัดมี 2 ประเภท ได้แก่

  1. การบีบอัดแบบสูญเสีย
  2. การบีบอัดที่ไม่สูญเสียข้อมูล

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

การบีบอัดแบบไม่สูญเสียข้อมูลจะลดขนาดไฟล์โดยการบีบอัดรูปภาพโดยไม่สูญเสียข้อมูล การบีบอัดแบบไม่สูญเสียข้อมูลจะอธิบายพิกเซลตามความแตกต่างจากพิกเซลที่อยู่ใกล้เคียง การบีบอัดแบบไม่สูญเสียข้อมูลจะใช้สำหรับรูปแบบรูปภาพ GIF, PNG, WebP และ AVIF

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

องค์ประกอบ <picture>

องค์ประกอบ <picture> ช่วยให้คุณระบุตัวเลือกรูปภาพหลายรูปได้อย่างยืดหยุ่นมากขึ้น ดังนี้

<picture>
  <source type="image/avif" srcset="image.avif">
  <source type="image/webp" srcset="image.webp">
  <img
    alt="An image"
    width="500"
    height="500"
    src="/image.jpg"
  >
</picture>

เมื่อใช้องค์ประกอบ <source> ภายในองค์ประกอบ <picture> คุณจะเพิ่มการรองรับรูปภาพ AVIF และ WebP ได้ แต่กลับไปใช้รูปแบบรูปภาพเดิมที่เข้ากันได้มากกว่าหากเบราว์เซอร์ไม่รองรับรูปแบบสมัยใหม่ ด้วยวิธีนี้ เบราว์เซอร์จะเลือกองค์ประกอบ <source> แรกที่ระบุว่าตรงกัน หากแสดงผลรูปภาพในรูปแบบนั้นได้ ก็จะใช้รูปภาพนั้น มิเช่นนั้น เบราว์เซอร์จะย้ายไปยังองค์ประกอบ <source> ที่ระบุถัดไป ในข้อมูลโค้ด HTML ก่อนหน้านี้ รูปแบบ AVIF จะมีลำดับความสำคัญเหนือรูปแบบ WebP โดยจะกลับไปใช้รูปแบบ JPEG หากไม่รองรับ AVIF หรือ WebP

องค์ประกอบ <picture> ต้องมีองค์ประกอบ <img> ที่ฝังอยู่ภายใน แอตทริบิวต์ alt, width และ height ได้รับการกําหนดไว้ใน<img> และจะมีการใช้งานไม่ว่าจะเลือก <source> ใดไว้ก็ตาม

องค์ประกอบ <source> รองรับแอตทริบิวต์ media, srcset และ sizes ด้วย คล้ายกับตัวอย่าง <img> ก่อนหน้านี้ โดยจะแสดงให้เบราว์เซอร์ทราบว่าควรเลือกรูปภาพใดในวิวพอร์ตต่างๆ

<picture>
  <source
    media="(min-resolution: 1.5x)"
    srcset="/image-1000.jpg 1000w, /image-1500.jpg 1500w"
    sizes="(min-width: 768px) 500px, 100vw"
  >
  <img
    alt="An image"
    width="500"
    height="500"
    src="/image-500.jpg"
  >
</picture>

แอตทริบิวต์ media จะใช้เงื่อนไขสื่อ ในตัวอย่างก่อนหน้านี้ ระบบใช้ DPR ของอุปกรณ์เป็นเงื่อนไขของสื่อ อุปกรณ์ที่มี DPR มากกว่าหรือเท่ากับ 1.5 จะใช้องค์ประกอบ <source> แรก องค์ประกอบ <source> จะบอกเบราว์เซอร์ว่าในอุปกรณ์ที่มีวิวพอร์ตกว้างกว่า 768 พิกเซล ตัวเลือกรูปภาพที่เลือกจะแสดงที่ความกว้าง 500 พิกเซล ส่วนในอุปกรณ์ขนาดเล็ก จะใช้ความกว้างของวิวพอร์ตทั้งหมด การรวมแอตทริบิวต์ media และ srcset เข้าด้วยกันจะทำให้คุณควบคุมได้มากขึ้นว่าจะใช้รูปภาพใด

ดังที่เห็นในตารางต่อไปนี้ซึ่งมีการประเมินความกว้างของวิวพอร์ตและอัตราส่วนพิกเซลของอุปกรณ์หลายรายการ

ความกว้างของวิวพอร์ต (พิกเซล) 1 DPR 1.5 สาธารณรัฐประชาธิปไตยประชาชน 2 DPR 3 DPR
320 500.jpg 500.jpg 500.jpg 1000.jpg
480 500.jpg 500.jpg 1000.jpg 1500.jpg
560 500.jpg 1000.jpg 1000.jpg 1500.jpg
1024 500.jpg 1000.jpg 1000.jpg 1500.jpg
1920 500.jpg 1000.jpg 1000.jpg 1500.jpg

อุปกรณ์ที่มี DPR เท่ากับ 1 จะดาวน์โหลดรูปภาพ image-500.jpg รวมถึงผู้ใช้เดสก์ท็อปส่วนใหญ่ที่ดูรูปภาพในขนาดภายนอกกว้าง 500 พิกเซล ในทางตรงกันข้าม ผู้ใช้อุปกรณ์เคลื่อนที่ที่มี DPR เท่ากับ 3 จะดาวน์โหลด image-1500.jpg ที่อาจมีขนาดใหญ่กว่า ซึ่งเป็นรูปภาพเดียวกับที่ใช้ในอุปกรณ์เดสก์ท็อปที่มี DPR เท่ากับ 3

<picture>
  <source
    media="(min-width: 560px) and (min-resolution: 1.5x)"
    srcset="/image-1000.jpg 1000w, /image-1500.jpg 1500w"
    sizes="(min-width: 768px) 500px, 100vw"
  >
  <source
    media="(max-width: 560px) and (min-resolution: 1.5x)"
    srcset="/image-1000-sm.jpg 1000w, /image-1500-sm.jpg 1500w"
    sizes="(min-width: 768px) 500px, 100vw"
  >
  <img
    alt="An image"
    width="500"
    height="500"
    src="/image-500.jpg"
  >
</picture>

ในตัวอย่างนี้ องค์ประกอบ <picture> ได้รับการปรับให้รวมองค์ประกอบ <source> เพิ่มเติมเพื่อใช้รูปภาพที่แตกต่างกันสำหรับอุปกรณ์แบบกว้างที่มี DPR สูง

ความกว้างของวิวพอร์ต (พิกเซล) 1 DPR 1.5 สาธารณรัฐประชาธิปไตยประชาชน 2 DPR 3 DPR
320 500.jpg 500.jpg 500.jpg 1000-sm.jpg
480 500.jpg 500.jpg 1000-sm.jpg 1500-sm.jpg
560 500.jpg 1000-sm.jpg 1000-sm.jpg 1500-sm.jpg
1024 500.jpg 1000.jpg 1000.jpg 1500.jpg
1920 500.jpg 1000.jpg 1000.jpg 1500.jpg

การค้นหาเพิ่มเติมนี้จะแสดงให้เห็นว่า image-1000-sm.jpg และ image-1500-sm.jpg แสดงอยู่ในวิวพอร์ตขนาดเล็ก ข้อมูลเพิ่มเติมนี้จะช่วยคุณบีบอัดรูปภาพได้เพิ่มเติม เนื่องจากอาร์ติแฟกต์การบีบอัดจะมองไม่เห็นขนาดและความหนาแน่นสูงนัก และจะไม่ทำให้คุณภาพของรูปในอุปกรณ์เดสก์ท็อปลดลงด้วย

นอกจากนี้ การปรับแอตทริบิวต์ srcset และ media จะช่วยให้คุณหลีกเลี่ยงการแสดงรูปภาพขนาดใหญ่ในวิวพอร์ตขนาดเล็กได้ โดยทำดังนี้

<picture>
  <source
    media="(min-width: 560px)"
    srcset="/image-500.jpg, /image-1000.jpg 2x, /image-1500.jpg 3x"
  >
  <source
    media="(max-width: 560px)"
    srcset="/image-500.jpg 1x, /image-1000.jpg 2x"
  >
  <img
    alt="An image"
    width="500"
    height="500"
    src="/image-500.jpg"
  >
</picture>

ในข้อมูลโค้ด HTML ก่อนหน้านี้ เราได้นำข้อบ่งชี้ความกว้างออกเพื่อใช้ข้อบ่งชี้อัตราส่วนพิกเซลของอุปกรณ์ รูปภาพที่แสดงในอุปกรณ์เคลื่อนที่จะจำกัดไว้ที่ /image-500.jpg หรือ /image-1000.jpg แม้จะอยู่ในอุปกรณ์ที่มี DPR เท่ากับ 3 ก็ตาม

วิธีจัดการความซับซ้อน

เมื่อใช้รูปภาพที่ตอบสนองตามอุปกรณ์ คุณจะเห็นได้ว่าแต่ละรูปภาพมีหลายขนาดและหลายรูปแบบ ในตัวอย่างก่อนหน้านี้จะใช้รูปแบบต่างๆ สำหรับแต่ละขนาด แต่ไม่รวม AVIF และ WebP คุณควรมีตัวแปรกี่ตัว เช่นเดียวกับโจทย์ด้านวิศวกรรมหลายๆ ข้อ คำตอบมักจะเป็น "แล้วแต่กรณี"

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

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

นอกจากนี้ ขนาดของเอกสาร HTML จะเพิ่มขึ้นตามแต่ละรูปแบบ คุณจะพบว่าตัวเองส่ง HTML หลายกิโลไบต์ต่อรูป

แสดงรูปภาพตามส่วนหัวของคำขอ Accept

ส่วนหัวคำขอ HTTP ของ Accept จะแจ้งให้เซิร์ฟเวอร์ทราบประเภทเนื้อหาที่เบราว์เซอร์ของผู้ใช้เข้าใจ เซิร์ฟเวอร์จะใช้ข้อมูลนี้เพื่อแสดงรูปแบบรูปภาพที่ดีที่สุดโดยไม่ต้องเพิ่มไบต์เพิ่มเติมลงในการตอบสนอง HTML

if (request.headers.accept) {
  if (request.headers.accept.includes('image/avif')) {
    return reply.from('image.avif');
  } else if (request.headers.accept.includes('image/webp')) {
    return reply.from('image.webp');
  }
}

return reply.from('image.jpg');

ข้อมูลโค้ด HTML ก่อนหน้านี้คือโค้ดเวอร์ชันง่ายๆ ที่คุณสามารถเพิ่มลงในแบ็กเอนด์ JavaScript ของเซิร์ฟเวอร์เพื่อเลือกและแสดงรูปแบบรูปภาพที่เหมาะสมที่สุดได้ หากส่วนหัว Accept ของคำขอมี image/avif ระบบจะแสดงรูปภาพ AVIF มิเช่นนั้น หากส่วนหัว Accept มี image/webp ระบบจะแสดงรูปภาพ WebP หากไม่มีเงื่อนไขใดเป็นจริง รูปภาพ JPEG จะแสดงขึ้นมา

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

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

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

การโหลดแบบ Lazy Loading

คุณบอกให้เบราว์เซอร์โหลดรูปภาพแบบ Lazy Loading เมื่อรูปภาพปรากฏในวิวพอร์ตได้โดยใช้แอตทริบิวต์ loading ค่าแอตทริบิวต์ lazy จะบอกเบราว์เซอร์ว่าอย่าดาวน์โหลดรูปภาพจนกว่าจะอยู่ใน (หรือใกล้) วิวพอร์ต ซึ่งจะช่วยประหยัดแบนด์วิดท์ ทำให้เบราว์เซอร์จัดลำดับความสำคัญของทรัพยากรที่จำเป็นต่อการแสดงผลเนื้อหาสำคัญที่อยู่ในวิวพอร์ตอยู่แล้วได้

decoding

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

การสาธิตรูปภาพ

ทดสอบความรู้ของคุณ

รูปแบบรูปภาพใดรองรับการบีบอัดแบบไม่สูญเสีย

GIF
ถูกต้องแล้ว!
JPEG
โปรดลองอีกครั้ง
PNG
ถูกต้องแล้ว!
WebP
ถูกต้องแล้ว!
AVIF
ถูกต้องแล้ว!

รูปแบบรูปภาพใดรองรับการบีบอัดแบบสูญเสีย

GIF
โปรดลองอีกครั้ง แม้ว่ารูปแบบ GIF จะรองรับชุดสีที่จำกัดที่ 256 สีเท่านั้น แต่ก็ต้องทำการเข้ารหัสแบบสูญเสียบางส่วนก่อนที่จะแปลงเป็น GIF
JPEG
ถูกต้องแล้ว!
PNG
โปรดลองอีกครั้ง
WebP
ถูกต้องแล้ว!
AVIF
ถูกต้องแล้ว!

ข้อบ่งชี้ความกว้าง (เช่น 1000w) บอกอะไรในเบราว์เซอร์เกี่ยวกับตัวเลือกรูปภาพที่ระบุในแอตทริบิวต์ srcset

ความกว้างภายนอกของรูปภาพ ซึ่งก็คือขนาดของรูปภาพในเลย์เอาต์หลังจากที่ใช้รูปแบบกับหน้าเว็บ
โปรดลองอีกครั้ง
ความกว้างภายในของรูปภาพ ซึ่งก็คือขนาดของตัวรูปภาพเอง
ถูกต้องแล้ว!

แอตทริบิวต์ sizes บอกอะไรกับเบราว์เซอร์เกี่ยวกับองค์ประกอบ <img> ที่นําไปใช้

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

ถัดไป: ประสิทธิภาพของวิดีโอ

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