Õppige CSS-i koodi tükeldamine ja dünaamilised impordid. Parandage veebirakenduste globaalset jõudlust, optimeerige laadimisaegu ja täiustage kasutajakogemust.
CSS-i koodi tükeldamise reegel: globaalse jõudluse avamine dünaamilise impordi rakendamisega
Tänapäeva omavahel ühendatud maailmas ei ole veebijõudlus lihtsalt meeldiv lisafunktsioon; see on edu saavutamiseks kriitiline nõue. Kasutajad kogu maailmas ootavad kiiret laadimist, sujuvat interaktsiooni ja järjepidevalt sujuvat kogemust, olenemata nende seadmest, võrgutingimustest või geograafilisest asukohast. Aeglane veebisait võib viia kõrgemate põrkemääradeni, madalamate konversioonimääradeni ja brändi maine languseni, eriti mitmekesise rahvusvahelise publiku teenindamisel.
Üks sageli tähelepanuta jäetud aeglaste veebirakenduste põhjuseid on allalaaditava ja parsitava CSS-i tohutu maht. Projektide keerukuse kasvades suureneb ka nende stiil. Kogu rakenduse CSS-i edastamine ühes monoliitses paketis tähendab, et kasutajad Mumbais, Londonis või São Paulos laadivad alla stiile lehtede või komponentide jaoks, mida nad ei pruugi kunagi külastada. Just siin muutub CSS-i koodi tükeldamine, mis põhineb dünaamilise impordi rakendamisel, mängu muutjaks.
Ülemaailmne püüdlus välkkiirete veebikogemuste poole
Kujutage ette kasutajat arengumaast, kes pääseb teie veebirakendusele juurde mobiilseadmest 2G või ebastabiilse 3G ühenduse kaudu. Iga kilobait loeb. Traditsiooniline lähenemine, kus kogu CSS koondatakse ühte suurde faili, sageli koos JavaScriptiga, võib märkimisväärselt edasi lükata esimese sisuka kuvamise (FCP) ja suurima sisuka kuvamise (LCP), mis viib frustratsiooni ja loobumiseni. Globaalse publiku jaoks ei ole võrgu kiiruse ja seadme võimekuse osas madalaima ühisnimetaja optimeerimine mitte ainult hea tava; see on oluline kaasatuse ja ulatuse tagamiseks.
Peamine probleem on see, et paljud veebirakendused laadivad CSS-i funktsioonide ja marsruutide jaoks, mis ei ole kohe nähtavad või isegi asjakohased kasutaja praegusele teekonnale. Kujutage ette e-kaubanduse platvormi, kus kasutaja maandub avalehele. Nad ei vaja koheselt keerukat CSS-i makseprotsessi, kasutaja konto armatuurlaua või administratiivpaneeli jaoks. Edastades ainult praeguse vaate jaoks vajaliku stiili, saame oluliselt parandada esialgseid laadimisaegu ja üldist reageerimisvõimet.
CSS-i koodi tükeldamise mõistmine: kaugemale JavaScriptist
Koodi tükeldamine on tehnika, mis võimaldab veebirakendustel laadida ainult konkreetse funktsionaalsuse või marsruudi jaoks vajalikku koodi, selle asemel et laadida kõik korraga. Kuigi enamik arutelusid koodi tükeldamise üle keskendub tugevalt JavaScriptile – suurte JavaScripti pakettide jagamine väiksemateks, nõudmisel laaditavateks tükkideks – kehtivad samad põhimõtted võimsalt ka CSS-i puhul.
Mis on koodi tükeldamine?
- See on rakenduse koodi jagamise protsess väiksemateks, hallatavateks pakettideks, mida saab asünkroonselt laadida.
- Ühe tohutu paketi asemel on teil mitu väiksemat.
- See saavutatakse tavaliselt mooduli tasandil, kasutades JavaScriptis dünaamilisi
import()
avaldisi või spetsiifilisi pakendaja konfiguratsioone.
Miks rakendada seda CSS-i puhul?
- Kiirem esialgne laadimine: Väiksemad CSS-failid tähendavad vähem allalaaditavaid ja parsitavaid andmeid, mis viib kriitilise sisu kiirema renderdamiseni. See on eriti kasulik piiratud ribalaiusega või vanemate seadmetega kasutajatele kogu maailmas.
- Vähenenud andmetarbimine: Mõõdetud andmepakettidega kasutajate jaoks tähendab tarbetute allalaadimiste vähendamine kulude kokkuhoidu ja paremat kasutajakogemust.
- Parem tajutud jõudlus: Kasutajad näevad sisu varem, mis muudab rakenduse kiiremaks ja reageerivamaks, isegi kui kogu laadimisaeg jääb kogu sessiooni jooksul sarnaseks.
- Parem vahemälu: Kui CSS on jagatud väiksemateks, funktsioonispetsiifilisteks tükkideks, ei muuda ühe funktsiooni stiilide muutused kõigi teiste funktsioonide stiilide vahemälu kehtetuks, mis viib tõhusamate vahemälu strateegiateni.
Dünaamiliste importide roll CSS-i koodi tükeldamises
JavaScripti dünaamiline import()
süntaks (ECMAScripti moodulite ettepanek) võimaldab teil mooduleid asünkroonselt importida. See tähendab, et selle mooduli koodi ei laadita enne, kui import()
funktsiooni kutsutakse. See on enamiku kaasaegsete koodi tükeldamise tehnikate nurgakivi JavaScriptis. CSS-i puhul on väljakutseks see, et te ei saa tavaliselt kasutada import()
otse .css
failil ja oodata, et see laaditakse maagiliselt DOM-i kui <link>
silt.
Selle asemel kasutame me pakendajate, nagu Webpack, Rollup või Parcel, võimsust, mis mõistavad, kuidas CSS-mooduleid töödelda. Kui JavaScripti fail impordib dünaamiliselt komponendi, mis omakorda impordib oma CSS-i, tunneb pakendaja selle sõltuvuse ära. Seejärel eraldab ta selle CSS-i eraldi tükiks, mis laaditakse koos JavaScripti tükiga, kuid eraldi CSS-failina.
Kuidas see kulisside taga töötab:
- Teie JavaScripti kood teeb dünaamilise
import('./path/to/Component')
kutse. - Selle komponendi fail (nt
Component.js
) sisaldab avaldistimport './Component.css'
. - Pakendaja (nt Webpack) näeb dünaamilist JavaScripti importi ja loob
Component.js
jaoks eraldi JavaScripti tüki. - Samaaegselt tuvastab pakendaja CSS-i impordi
Component.js
sees ja eraldabComponent.css
oma CSS-i tükiks, mis on lingitud JavaScripti tükiga. - Kui dünaamiline import brauseris käivitatakse, laaditakse ja rakendatakse nii JavaScripti tükk kui ka sellega seotud CSS-i tükk, tavaliselt süstides dokumendi
<head>
-i CSS-i jaoks<link>
sildi.
Praktilised rakendamisstrateegiad
Sukeldume sellesse, kuidas saate rakendada CSS-i koodi tükeldamist dünaamiliste importide abil, keskendudes peamiselt Webpackile, laialdaselt kasutatavale moodulite pakendajale.
Ehita keskkonna seadistamine (Webpacki näide)
CSS-i koodi tükeldamise lubamiseks Webpackiga vajate mõnda võtmelist laadurit ja pistikprogrammi:
css-loader
: Tõlgendab@import
jaurl()
sarnaseltimport/require()
-ga ja lahendab need.mini-css-extract-plugin
: Eraldab CSS-i eraldi failidesse. See loob iga JS-tüki kohta CSS-faili, mis sisaldab CSS-i. See toetab nii sünkroonset kui ka asünkroonset CSS-i nõudmisel laadimist.style-loader
: Süstib CSS-i DOM-i. (Kasutatakse sageli arenduses,mini-css-extract-plugin
tootmises).
Siin on lihtsustatud Webpacki konfiguratsiooninäide CSS-i eraldamiseks:
// webpack.config.js\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin');\n\nmodule.exports = {\n // ... other configurations\n module: {\n rules: [\n {\n test: /\\.(s?css)$/i,\n use: [\n // In production, use MiniCssExtractPlugin for separate files.\n // In development, 'style-loader' can be used for HMR.\n process.env.NODE_ENV === 'production' ? MiniCssExtractPlugin.loader : 'style-loader',\n 'css-loader',\n // 'sass-loader' if you use Sass/SCSS\n ],\n },\n ],
},\n plugins: [\n new MiniCssExtractPlugin({\n filename: 'styles/[name].[contenthash].css',\n chunkFilename: 'styles/[id].[contenthash].css', // This is crucial for split chunks\n }),\n ],\n optimization: {\n splitChunks: {\n chunks: 'all', // Apply to all chunks, including async ones\n minSize: 20000, // Minimum size of a chunk to be split (bytes)\n minChunks: 1, // Minimum number of modules before a chunk is generated\n maxAsyncRequests: 30, // Max concurrent requests for an entry point\n maxInitialRequests: 30, // Max concurrent requests for a dynamic import\n enforceSizeThreshold: 50000, // Enforce splitting even if minSize not met if chunk is above threshold\n cacheGroups: {\n vendors: {\n test: /[\\\\/]node_modules[\\\\/]/,\n name: 'vendors',\n chunks: 'all',\n },\n // Define custom cache groups for shared CSS or specific features if needed\n // common: {\n // name: 'common-css',\n // minChunks: 2,\n // priority: -10,\n // reuseExistingChunk: true,\n // },\n },\n },\n },\n // ...\n};\n
Splitting CSS for Specific Components or Routes
The most common and effective way to split CSS is to tie it directly to the components or routes that require it. This ensures that when a user navigates to a new route or interacts with a component (like opening a modal), only the necessary styles are loaded.
Component-Level CSS (Example with React/Vue)
Imagine a Modal
component that is only rendered when a user clicks a button. Its styles should not be part of the initial bundle.
// components/Modal/Modal.js (või .jsx, .vue)\nimport React, { lazy, Suspense } from 'react';\n\n// Impordime dünaamiliselt komponendi ise, mis omakorda impordib oma CSS-i.\nconst LazyModal = lazy(() => import('./ModalContent'));\n\nfunction App() {\n const [showModal, setShowModal] = React.useState(false);\n\n return (\n <div>\n <h1>Tere tulemast meie globaalsesse rakendusse</h1>\n <button onClick={() => setShowModal(true)}>Ava modaalaken</button>\n\n {showModal && (\n <Suspense fallback={<div>Modaali laadimine...</div>}>\n <LazyModal onClose={() => setShowModal(false)} />\n </Suspense>\n )}\n </div>\n );\n}\n\nexport default App;\n
// components/Modal/ModalContent.js\nimport React from 'react';\nimport './Modal.css'; // See CSS jagatakse ModalContent.js-iga\n
function ModalContent({ onClose }) {\n return (\n <div className="modal-overlay">\n <div className="modal-content">\n <h2>Modaalakna pealkiri</h2>\n <p>See on dünaamiliselt laaditud modaalakna sisu.</p>\n <button onClick={onClose}>Sulge</button>\n </div>\n </div>\n );\n}\n\nexport default ModalContent;\n
/* components/Modal/Modal.css */\n.modal-overlay {\n position: fixed;\n top: 0; left: 0; right: 0; bottom: 0;\n background-color: rgba(0, 0, 0, 0.6);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n}\n\n.modal-content {\n background-color: white;\n padding: 30px;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n max-width: 500px;\n width: 90%;\n text-align: center;\n font-family: Arial, sans-serif; /* Globaalsõbralik font */\n}\n
Kui LazyModal
imporditakse dünaamiliselt, tagab Webpack, et ModalContent.js
ja Modal.css
laaditakse koos eraldi tükina.
Marsruudipõhine CSS
Ühelehele rakenduste (SPA) puhul, millel on mitu marsruuti, võib igal marsruudil olla oma spetsiaalne CSS-pakett. See saavutatakse tavaliselt marsruudi komponendi enda dünaamilise importimisega.
// App.js (Näide React Routeriga)\nimport React, { lazy, Suspense } from 'react';\nimport { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';\n\nconst Home = lazy(() => import('./pages/Home'));\nconst About = lazy(() => import('./pages/About'));\nconst Dashboard = lazy(() => import('./pages/Dashboard'));\n\nfunction App() {\n return (\n <Router>\n <nav>\n <ul>\n <li><Link to="\\/">Avaleht</Link></li>\n <li><Link to="\\/about">Meist</Link></li>\n <li><Link to="\\/dashboard">Armatuurlaud</Link></li>\n </ul>\n </nav>\n\n <Suspense fallback={<div>Lehe laadimine...</div>}>\n <Routes>\n <Route path="\\/" element={<Home />} />\n <Route path="\\/about" element={<About />} />\n <Route path="\\/dashboard" element={<Dashboard />} />\n </Routes>\n </Suspense>\n </Router>\n );\n}\n\nexport default App;\n
// pages/Home.js\nimport React from 'react';\nimport './Home.css'; // Avalehe spetsiifilised stiilid\n
function Home() {\n return <h2 className="home-title">Tere tulemast avalehele!</h2>;\n}\nexport default Home;\n
/* pages/Home.css */\n.home-title {\n color: #2196F3; /* Tavaline sinine */\n font-size: 2.5em;\n text-align: center;\n padding: 20px;\n}\n
Kui kasutaja navigeerib /dashboard
-ile, laaditakse ainult Dashboard
komponendiga seotud CSS, mitte kõigi marsruutide CSS.
Kriitiline CSS ja esialgse laadimise optimeerimine
Mis on kriitiline CSS?
Kriitiline CSS (või "ülapiirist kõrgemal" CSS) viitab minimaalsele stiilikomplektile, mis on vajalik veebilehe nähtava osa koheseks renderdamiseks laadimisel. Lisades selle CSS-i otse oma HTML-i <head>
-i, eemaldate renderdamist blokeeriva päringu, võimaldades sisul palju kiiremini ilmuda.
Kuidas eraldada ja lisada kriitiline CSS otse HTML-i:
- Tuvastage kriitilised stiilid: Kasutage tööriistu nagu Google Lighthouse, PurgeCSS või spetsiaalseid kriitilise CSS-i eraldamise tööriistu (nt
critical
pakett), et leida algses vaateväljas kasutatavaid stiile. - Lisage HTML-i: Paigutage need eraldatud stiilid oma HTML-i
<head>
-i<style>
sildi sisse. - Laadige ülejäänud CSS asünkroonselt: Ülejäänud CSS (sealhulgas dünaamiliselt imporditud tükid) saab seejärel laadida asünkroonselt pärast esialgset renderdamist.
See hübriidne lähenemine ühendab mõlema maailma parimad omadused: kohese visuaalse tagasiside kriitilise CSS-iga ja tõhusa, nõudmisel laadimise kõige muu jaoks. Globaalse publiku jaoks võib see oluliselt mõjutada tajutavat jõudlust, eriti aeglasema võrguühendusega või kõrgema latentsusega kasutajate puhul.
Täiustatud stsenaariumid ja kaalutlused globaalse publiku jaoks
Erinevate teemade või lokaatide käsitlemine
Paljud globaalsed rakendused pakuvad erinevaid teemasid (nt hele/tume režiim) või kohandavad stiile vastavalt lokaadile (nt paremalt vasakule araabia/heebrea keelte puhul). Dünaamilisi importi saab siin tõhusalt kasutada:
// themeSwitcher.js\nexport function loadTheme(themeName) {\n if (themeName === 'dark') {\n // Impordib dünaamiliselt tumeda teema CSS-i\n return import('./themes/dark-theme.css');\n } else if (themeName === 'light') {\n return import('./themes/light-theme.css');\n }\n // Vaikimisi või muud teemad\n}\n
See võimaldab kasutajatel teemasid vahetada lehte uuesti laadimata ja laaditakse ainult vajaliku teema CSS.
// localeStyles.js\nexport function loadLocaleStyles(locale) {\n if (locale === 'ar' || locale === 'he') {\n // Laadi RTL (paremalt vasakule) spetsiifilised stiilid\n return import('./locales/rtl.css');\n } else if (locale === 'ja') {\n // Laadi Jaapani spetsiifiline font või paigutuse kohandused\n return import('./locales/ja.css');\n }\n // LTR-i pole enamikul juhtudel vaja eraldi käsitleda, kuna see on vaikimisi\n}\n
Selline lähenemine tagab, et erinevates piirkondades olevad kasutajad saavad asjakohase stiili ilma tarbetute allalaadimisteta.
Müüja CSS-i tükeldamine
Suured kolmandate osapoolte teegid (nt põhjalik kasutajaliidese raamistik nagu Material-UI või Ant Design, või CSS-raamistik nagu Bootstrap) sisaldavad sageli oma olulisi CSS-faile. Webpacki optimization.splitChunks
saab konfigureerida neid müüja stiile eraldama eraldi vahemälustatavasse paketti:
// Inside webpack.config.js -> optimization.splitChunks.cacheGroups\nvendors: {\n test: /[\\\\/]node_modules[\\\\/](react|react-dom|lodash|bootstrap)[\\\\/]/,\n name: 'vendor-css',\n chunks: 'all',\n priority: 20, // Kõrgem prioriteet kui vaikimisi grupid\n enforce: true,\n},\n
See tagab, et kui teie rakenduse kood muutub, ei pea suurt müüja CSS-paketti uuesti alla laadima, tingimusel et selle sisu räsi jääb samaks.
Vahemälu strateegiad
Tõhus vahemälu on jõudluse seisukohalt ülimalt oluline, eriti tükeldatud pakettide puhul. Veenduge, et teie server on konfigureeritud saatma sobivaid HTTP vahemälu päiseid (Cache-Control
, Expires
, ETag
). Sisu põhise räsimise (nt [contenthash]
Webpacki failinimedes) kasutamine teie CSS-tükkide jaoks võimaldab pikaajalist vahemällu salvestamist. Kui faili sisu muutub, muutub selle räsi, sundides brauserit uut versiooni alla laadima, samas kui muutumatud failid jäävad vahemällu.
Jõudluse jälgimine ja mõõdikud
Koodi tükeldamise rakendamine on vaid pool võitu; selle mõju mõõtmine on ülioluline. Tööriistad nagu:
- Google Lighthouse: Pakub põhjalikke auditeid jõudluse, ligipääsetavuse, SEO ja parimate tavade kohta.
- WebPageTest: Pakub üksikasjalikke kaskaatgraafikuid ja mõõdikuid erinevatest geograafilistest asukohtadest ja võrgutingimustest, andes teile globaalse ülevaate oma optimeerimistest.
- Brauseri arendustööriistad: Võrgu vahekaart aitab visualiseerida tükkide laadimist ja jõudluse vahekaart näitab renderdamise mõõdikuid.
- Reaalaja kasutaja jälgimise (RUM) tööriistad: Nagu SpeedCurve, New Relic või kohandatud analüütika, saavad jälgida tegelikke kasutajakogemuse mõõdikuid nagu FCP, LCP ja TBT (Total Blocking Time) erinevates piirkondades.
Keskenduge järgmistele mõõdikutele:
- Esimene sisukas kuvamine (FCP): Kui DOM-i esimene sisu renderdatakse.
- Suurim sisukas kuvamine (LCP): Kui vaateakna suurim sisuelement muutub nähtavaks.
- Kogublokeerimisaeg (TBT): Aeg, mil leht on blokeeritud kasutajasisendile reageerimast.
Globaalne keskendumine nendele mõõdikutele aitab tagada võrdväärsed kasutajakogemused.
Parimad tavad globaalse CSS-i koodi tükeldamisel
- Granulaarsus on oluline: Ärge tükeldage üle. Kuigi on ahvatlev tükeldada iga pisike CSS-i osa, võib liiga paljude väikeste tükkide loomine viia suurenenud HTTP-päringute ja üldkuludeni. Leidke tasakaal; tavaliselt on hea alguspunkt tükeldamine marsruudi või peamise komponendi järgi.
- Organiseeritud CSS: Võtke kasutusele modulaarne CSS-arhitektuur (nt BEM, CSS-moodulid või Styled Components), et hõlbustada kokkukuuluvate stiilide tuvastamist ja eraldamist.
- Testige põhjalikult: Testige oma koodijagatud rakendust alati erinevates brauserites, seadmetes ja mis kõige tähtsam, erinevates võrgutingimustes (simuleerige aeglast 3G, 2G), et tagada kõigi stiilide korrektne laadimine ilma FOUC-i (Flash of Unstyled Content) või paigutuse nihkumiseta. Testige erinevatest geograafilistest asukohtadest, kasutades tööriistu nagu WebPageTest.
- Serveripoolse renderdamise (SSR) kaalutlused: Kui kasutate SSR-i, veenduge, et teie serveripoolse renderdamise lahendus suudab eraldada kriitilise CSS-i esialgse renderdamise jaoks ja korrektseks käsitleda järgnevate CSS-tükkide dünaamilist laadimist kliendile. Teegid nagu
loadable-components
pakuvad sageli SSR-tuge. - Varumehhanismid: Kuigi kaasaegsed brauserid toetavad laialdaselt dünaamilisi importi, arvestage kasutajatega, kellel on vanemad brauserid või JavaScript keelatud. Kriitiline CSS aitab, kuid dünaamiliselt laaditud osade jaoks võib olla vajalik põhiline, stiliseerimata varuvariant või graatsiline halvenemine.
- Eellaadimine/eellaadimine: Kasutage
<link rel="preload">
ja<link rel="preconnect">
oluliste ressursside jaoks, mis laaditakse peatselt, isegi kui dünaamiliselt. See annab brauserile vihje nende varem hankimiseks.
Võimalikud väljakutsed ja nende ületamine
Stiliseerimata sisu välgatus (FOUC)
See juhtub, kui HTML-sisu renderdatakse enne vastava CSS-i laadimist, mille tulemuseks on lühike stiliseerimata teksti või paigutuse vilkumine. Selle leevendamiseks:
- Kriitiline CSS: Nagu arutatud, lisage kõige olulisemad stiilid otse HTML-i.
- Laadimise indikaatorid: Kasutage laadimise keerutajaid või skelettekraane, kui dünaamiline sisu ja selle stiilid laaditakse.
- Minimaalne paigutus: Veenduge, et teie põhistiilid pakuvad tugevat minimaalset paigutust, et vältida drastilisi nihkeid.
Suurenenud keerukus ehitamiskonfiguratsioonis
Keerulise Webpacki konfiguratsiooni seadistamine ja hooldamine CSS-i koodi tükeldamiseks võib olla keeruline, eriti suuremate projektide puhul. See on ühekordne kulu, mis tasub end ära jõudluse kasuga.
- Alustage lihtsalt: Alustage marsruutide järgi tükeldamisega, seejärel liikuge komponenditasandi tükeldamisele.
- Kasutage raamistiku CLI-tööriistu: Raamistikud nagu React (Create React App), Vue (Vue CLI) ja Angular on varustatud eelkonfigureeritud pakendajatega, mis sageli käsitlevad põhilisel tasandil koodi tükeldamist kohe karbist.
- Dokumentatsioon ja kogukond: Probleemide lahendamiseks vaadake ametlikku pakendaja dokumentatsiooni ja kogukonna ressursse.
Globaalsete stiilide vs. komponendi stiilide haldamine
Selge eristamine globaalsete, jagatud stiilide (nt tüpograafia, põhipaigutus) ja komponendispetsiifiliste stiilide vahel on ülioluline. Globaalsed stiilid peaksid olema osa esialgsest paketist või kriitilisest CSS-ist, samas kui komponendi stiilid on head kandidaadid tükeldamiseks.
- Selged nimetamise konventsioonid: Kasutage BEM-i või CSS-mooduleid stiilide ulatuse määramiseks ja konfliktide vältimiseks.
- Kihtstruktuur: Kujundage oma CSS kihtidega (alus, paigutus, komponendid, utiliidid, teemad), et selgitada, kuhu stiilid kuuluvad.
Järeldus: kiirem veeb kõigile
CSS-i koodi tükeldamise reegel, mis on realiseeritud dünaamilise impordi rakendamise kaudu, on võimas tehnika kaasaegsetele veebirakendustele, mis püüdlevad tippjõudluse poole. See ulatub kaugemale lihtsalt JavaScripti optimeerimisest, hõlmades kogu stiilikihti, pakkudes märkimisväärset mõju esialgsetele lehe laadimisaegadele ja üldisele kasutajakogemusele.
Globaalse publiku jaoks on eelised eriti selged. Arukalt edastades ainult vajalikku CSS-i, vähendate ribalaiuse tarbimist, kiirendate renderdamist ja pakute reageerivamat ja kaasavamat kogemust kasutajatele erinevates võrgutingimustes ja geograafilistes asukohtades.
CSS-i koodi tükeldamise omaksvõtmine koos tugeva ehitusprotsessi ja hoolika jõudluse jälgimisega ei ole enam lihtsalt optimeerimine; see on fundamentaalne strateegia suure jõudlusega, ligipääsetavate ja globaalselt konkurentsivõimeliste veebirakenduste loomiseks. Alustage nende strateegiate rakendamist juba täna ja sillutage teed kiiremale ja kaasahaaravamale veebikogemusele kõigile, igal pool.