CSS-i @media-failidesse jagamine parandab märkimisväärselt jõudlust

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

Kui CSS on kokku pandud ühte faili, sisaldab see isegi pärast raputamist (tree-shaking) endiselt palju kasutamata CSS-i erinevate @media kontekstide tõttu (mobiil, tahvelarvuti, lauaarvuti, tume/hele/muud teemad jne).

See on halb Core Web Vitalsi jaoks: First Input Delay (FID), Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), aga ka teised olulised jõudluse ja kasutatavuse mõõdikud: First Contentful Paint (FCP), Total Blocking Time (TBT), Time to Interactive (TTI) ja DOMContentLoaded sündmus.

On olemas viis, kuidas CSS-i laadimist ja renderdamist märkimisväärselt parandada, jagades CSS-i erinevatesse failidesse, kus iga fail sisaldab ainult selles kontekstis vajalikku koodi.

Jaga oma CSS erinevatesse failidesse:

📄main.css        - sisaldab CSS-i, mida on vaja kõikide @media tingimuste jaoks
📄screen.css      - sisaldab CSS-i, mida on vaja ainult screen @media tingimuse jaoks
📄print.css       - sisaldab CSS-i, mida on vaja ainult print @media tingimuse jaoks
📂breakpoints
    📄x-small.css - sisaldab CSS-i, mida on vaja ainult X-Small murdepunkti jaoks
    📄sm.css      - sisaldab CSS-i, mida on vaja ainult Small murdepunkti jaoks
    📄md.css      - sisaldab CSS-i, mida on vaja ainult Medium murdepunkti jaoks
    📄lg.css      - sisaldab CSS-i, mida on vaja ainult Large murdepunkti jaoks
    📄xl.css      - sisaldab CSS-i, mida on vaja ainult Extra large murdepunkti jaoks
    📄xxl.css     - sisaldab CSS-i, mida on vaja ainult Extra extra large murdepunkti jaoks
📂themes
    📄light.css   - sisaldab CSS-i, mida on vaja ainult heleda teema jaoks
    📄dark.css    - sisaldab CSS-i, mida on vaja ainult tumeda teema jaoks

Seejärel lisa CSS-failid näiteks nii:

<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)">

Selle lähenemisviisi korral panevad kaasaegsed brauserid CSS-i laadimisele prioriteedi praeguste @media tingimuste jaoks, nii et lehe renderdamine algab palju kiiremini, sest kasutajad ei pea ootama kasutamata CSS-i osa laadimist.
Juhtudel, kui sul on kogu CSS ühes failis ja sa ei määra tingimusi link-tagide media atribuutides, ootab brauser kogu CSS-i laadimist enne lehe renderdamise alustamist. See aga aeglustab lehe renderdamist drastiliselt.

Murdepunktid selles näites põhinevad Bootstrap 5-l. See lähenemine muutub Bootstrapi jaoks peagi veelgi olulisemaks, arvestades, et nad lisavad toe heledatele/tumetele/muudele teemadele.

Kui sa soovid muuta veebi paremaks ja kiiremaks, siis palun:

  • jaga seda artiklit,
  • saada see artikkel nende raamistike arendajatele, mida sa kasutad,
  • rakenda seda CSS-i eraldamist oma saitidel.

Jaga sotsiaalmeedias või salvesta hilisemaks:

Kui sa soovid selle optimeerimise ja brauseri käitumise kohta rohkem lugeda, siis vaata järgmist:

Leave a comment

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga