แยกไฟล์ CSS ตาม @media เพื่อประสิทธิภาพที่ดีขึ้นอย่างเห็นได้ชัด

Categorized as Core Web Vitals, CSS, HTML, Web, Web Performance
Save and Share:

เมื่อ CSS ถูกรวมเป็นไฟล์เดียว ถึงแม้จะมีการทำ tree-shaking แล้วก็ตาม ก็ยังมี CSS ที่ไม่ได้ใช้อยู่จำนวนมาก เนื่องจากบริบท @media ที่แตกต่างกัน (มือถือ แท็บเล็ต เดสก์ท็อป ธีมสว่าง/มืด/อื่นๆ และอื่นๆ)

ส่งผลเสียต่อ Core Web Vitals: First Input Delay (FID), Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS) รวมถึงเมตริกประสิทธิภาพและความสามารถในการใช้งานที่สำคัญอื่นๆ: First Contentful Paint (FCP), Total Blocking Time (TBT), Time to Interactive (TTI) และเหตุการณ์ DOMContentLoaded

มีวิธีปรับปรุงการโหลดและการแสดงผล CSS อย่างเห็นได้ชัด โดยการแยก CSS ออกเป็นไฟล์ต่างๆ ซึ่งแต่ละไฟล์จะมีเฉพาะโค้ดที่จำเป็นในบริบทนั้นๆ

แยกไฟล์ CSS ของคุณออกเป็นไฟล์ต่างๆ ดังนี้:

📄main.css        - มี CSS ที่จำเป็นสำหรับเงื่อนไข @media ทั้งหมด
📄screen.css      - มี CSS ที่จำเป็นสำหรับเงื่อนไข @media screen เท่านั้น
📄print.css       - มี CSS ที่จำเป็นสำหรับเงื่อนไข @media print เท่านั้น
📂breakpoints
    📄x-small.css - มี CSS ที่จำเป็นสำหรับ breakpoint X-Small เท่านั้น
    📄sm.css      - มี CSS ที่จำเป็นสำหรับ breakpoint Small เท่านั้น
    📄md.css      - มี CSS ที่จำเป็นสำหรับ breakpoint Medium เท่านั้น
    📄lg.css      - มี CSS ที่จำเป็นสำหรับ breakpoint Large เท่านั้น
    📄xl.css      - มี CSS ที่จำเป็นสำหรับ breakpoint Extra large เท่านั้น
    📄xxl.css     - มี CSS ที่จำเป็นสำหรับ breakpoint Extra extra large เท่านั้น
📂themes
    📄light.css   - มี CSS ที่จำเป็นสำหรับธีมสว่างเท่านั้น
    📄dark.css    - มี CSS ที่จำเป็นสำหรับธีมมืดเท่านั้น

จากนั้น ใส่ไฟล์ CSS ในลักษณะนี้:

<link rel="stylesheet" href="main.css" media="all">
<link rel="stylesheet" href="screen.css" media="screen">
<link rel="stylesheet" href="print.css" media="print">
<link rel="stylesheet" href="x-small.css" media="(max-width: 575px)">
<link rel="stylesheet" href="sm.css" media="(min-width: 576px)">
<link rel="stylesheet" href="md.css" media="(min-width: 768px)">
<link rel="stylesheet" href="lg.css" media="(min-width: 992px)">
<link rel="stylesheet" href="xl.css" media="(min-width: 1200px)">
<link rel="stylesheet" href="xxl.css" media="(min-width: 1400px)">
<link rel="stylesheet" href="light.css" media="(prefers-color-scheme: light)">
<link rel="stylesheet" href="dark.css" media="(prefers-color-scheme: dark)">

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

Breakpoint ในตัวอย่างนี้อ้างอิงจาก Bootstrap 5 แนวทางนี้จะมีความสำคัญมากยิ่งขึ้นสำหรับ Bootstrap ในเร็วๆ นี้ เนื่องจากพวกเขาจะเพิ่มการรองรับธีมสว่าง/มืด/อื่นๆ

หากคุณต้องการทำให้เว็บดีขึ้นและเร็วขึ้น โปรด:

  • แชร์บทความนี้
  • ส่งบทความนี้ให้กับผู้พัฒนาเฟรมเวิร์กที่คุณใช้
  • นำการแยก CSS นี้ไปใช้บนเว็บไซต์ของคุณ

Share on social media or save for later:

หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับการปรับแต่งนี้และพฤติกรรมของเบราว์เซอร์ โปรดดูที่:

Leave a comment

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