Naučite kako implementirati Frontend Lighthouse CI za kontinuirano praćenje performansi, osiguravajući optimalnu brzinu i korisničko iskustvo za vaše web aplikacije.
Frontend Lighthouse CI: Kontinuirano praćenje performansi za web aplikacije
U današnjem brzom digitalnom okruženju, performanse web stranica su od presudne važnosti. Spora ili loše optimizirana web stranica može dovesti do frustriranih korisnika, smanjenog angažmana i, u konačnici, negativnog utjecaja na vaše poslovanje. Tu na scenu stupa Lighthouse CI. Ovaj vodič provest će vas kroz implementaciju Lighthouse CI-ja za kontinuirano praćenje performansi, omogućujući vam proaktivno prepoznavanje i rješavanje uskih grla u performansama prije nego što utječu na vaše korisnike.
Što je Lighthouse CI?
Lighthouse CI je automatizirani alat za testiranje performansi otvorenog koda koji se besprijekorno integrira u vaš cjevovod za kontinuiranu integraciju i isporuku (CI/CD). Koristi Googleov alat za reviziju Lighthouse kako bi pružio praktične uvide u performanse, pristupačnost, SEO i najbolje prakse vaše web stranice. Uključivanjem Lighthouse CI-ja u svoj radni proces, možete kontinuirano pratiti performanse svoje web stranice, pratiti regresije i osigurati da svaka promjena koda doprinosi boljem korisničkom iskustvu. Lighthouse CI nije vezan za jednog određenog pružatelja usluga u oblaku i može se koristiti s različitim postavkama. Na primjer, može se pokrenuti unutar Docker spremnika na uslugama kao što su Github Actions, Jenkins, CircleCI i mnoge druge.
Zašto koristiti Lighthouse CI?
Implementacija Lighthouse CI-ja nudi mnoštvo prednosti:
- Rano otkrivanje regresija u performansama: Identificirajte probleme s performansama uvedene novim promjenama koda prije nego što stignu u produkciju.
- Poboljšane performanse web stranice: Dobijte praktične uvide o tome kako optimizirati svoju web stranicu za brzinu, pristupačnost i SEO.
- Poboljšano korisničko iskustvo: Isporučite bržu i korisnički prihvatljiviju web stranicu koja zadržava posjetitelje angažiranima.
- Smanjena stopa napuštanja stranice (Bounce Rate): Optimizirajte vrijeme učitavanja kako biste smanjili frustraciju korisnika i spriječili ih da napuste vašu stranicu.
- Povećane stope konverzije: Brža web stranica obično dovodi do viših stopa konverzije i boljih poslovnih rezultata.
- Automatizirano testiranje performansi: Integrirajte testiranje performansi u svoj CI/CD cjevovod za kontinuirano praćenje.
- Donošenje odluka temeljenih na podacima: Temeljite svoje napore u optimizaciji na konkretnim metrikama performansi i uvidima.
- Dugoročno praćenje performansi: Pratite performanse svoje web stranice tijekom vremena kako biste identificirali trendove i mjerili utjecaj svojih optimizacija.
Ključne značajke Lighthouse CI-ja
- Automatizirane revizije: Automatski pokreće Lighthouse revizije kao dio vašeg CI/CD procesa.
- Budžeti za performanse: Postavite budžete za performanse kako biste osigurali da vaša web stranica ostane unutar prihvatljivih pragova performansi.
- Praćenje regresija: Prati regresije u performansama tijekom vremena, omogućujući vam da identificirate promjene koda koje su ih uzrokovale.
- Praktični uvidi: Pruža detaljna izvješća s praktičnim preporukama o tome kako poboljšati performanse vaše web stranice.
- Prilagodljiva konfiguracija: Konfigurirajte Lighthouse CI kako bi zadovoljio vaše specifične potrebe i zahtjeve.
- Integracija s CI/CD alatima: Besprijekorno se integrira s popularnim CI/CD alatima kao što su Jenkins, CircleCI, GitHub Actions i GitLab CI.
- Otvoreni kod (Open Source): Lighthouse CI je projekt otvorenog koda, što znači da je besplatan za korištenje i modificiranje.
Postavljanje Lighthouse CI-ja: Vodič korak po korak
Evo sveobuhvatnog vodiča za postavljanje Lighthouse CI-ja za vaš projekt:
1. Instalirajte Lighthouse CI CLI
Prvo, trebate globalno instalirati sučelje naredbenog retka (CLI) za Lighthouse CI koristeći npm ili yarn:
npm install -g @lhci/cli
yarn global add @lhci/cli
2. Konfigurirajte Lighthouse CI
Kreirajte datoteku lighthouserc.js
u korijenskoj mapi vašeg projekta kako biste konfigurirali Lighthouse CI. Ova datoteka definira URL-ove za reviziju, pravila provjere (assertions) i druge opcije konfiguracije.
Evo osnovnog primjera datoteke lighthouserc.js
:
module.exports = {
ci:
{
collect: {
url: ['http://localhost:3000', 'http://localhost:3000/about']
},
assert: {
preset: 'lighthouse:recommended'
},
upload: {
target: 'temporary-public-storage'
},
},
};
Objašnjenje:
collect.url
: Određuje URL-ove koje će Lighthouse revidirati. U ovom primjeru, revidiramo početnu stranicu i stranicu "o nama" web stranice koja se izvodi nalocalhost:3000
. Ne zaboravite ovo zamijeniti URL-ovima relevantnim za *vaš* projekt, što može uključivati i staging okruženja.assert.preset
: Koristi predložaklighthouse:recommended
, koji primjenjuje skup unaprijed definiranih provjera temeljenih na preporukama Lighthousea. Ovo je dobra polazna točka, ali možete prilagoditi ove provjere prema potrebi.upload.target
: Konfigurira gdje će se rezultati Lighthouse CI-ja učitati.temporary-public-storage
je koristan za testiranje i razvoj, ali za produkcijska okruženja obično ćete htjeti koristiti trajnije rješenje za pohranu (o čemu će biti riječi kasnije).
3. Integrirajte Lighthouse CI u svoj CI/CD cjevovod
Sljedeći korak je integracija Lighthouse CI-ja u vaš CI/CD cjevovod. Točni koraci ovisit će o vašem CI/CD pružatelju usluga, ali općeniti proces uključuje dodavanje skripte u vašu CI/CD konfiguraciju koja pokreće Lighthouse CI naredbe.
Primjer korištenja GitHub Actions:
Kreirajte datoteku pod nazivom .github/workflows/lighthouse-ci.yml
u vašem repozitoriju sa sljedećim sadržajem:
name: Lighthouse CI
on:
push:
branches: [main]
pull_request:
jobs:
lighthouse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '16.x'
- name: Install dependencies
run: npm ci
- name: Run Lighthouse CI
run: |
npm install -g @lhci/cli@0.11.x
lhci autorun
Objašnjenje:
on.push.branches
: Pokreće tijek rada (workflow) na 'push' događaje namain
granu.on.pull_request
: Pokreće tijek rada na 'pull request' događaje.jobs.lighthouse.runs-on
: Određuje operativni sustav koji će se koristiti za posao (u ovom slučaju Ubuntu).steps
: Definira korake koji će se izvršiti u poslu:actions/checkout@v3
: Preuzima kod iz repozitorija.actions/setup-node@v3
: Postavlja Node.js.npm ci
: Instalira ovisnosti.Run Lighthouse CI
: Pokreće Lighthouse CI naredbe:npm install -g @lhci/cli@0.11.x
: Globalno instalira Lighthouse CI CLI. *Važno*: Uvijek se preporučuje zaključati određenu verziju.lhci autorun
: Pokreće Lighthouse CI u "autorun" načinu, koji automatski prikuplja revizije, provjerava budžete za performanse i učitava rezultate.
Važna razmatranja za CI/CD integraciju:
- Pokretanje poslužitelja: Prije pokretanja
lhci autorun
, osigurajte da vaš web poslužitelj radi (npr.npm start
). Možda ćete trebati dodati korak u svoju CI/CD konfiguraciju za pokretanje poslužitelja u pozadini. - Migracije baze podataka: Ako vaša aplikacija ovisi o bazi podataka, osigurajte da se migracije baze podataka izvrše kao dio vašeg CI/CD procesa *prije* pokretanja Lighthouse CI-ja.
- Varijable okruženja: Ako vaša aplikacija zahtijeva varijable okruženja, osigurajte da su one ispravno konfigurirane u vašem CI/CD okruženju.
4. Pokrenite Lighthouse CI
Sada, kad god gurnete promjene na main
granu ili kreirate 'pull request', Lighthouse CI tijek rada će se automatski pokrenuti. Rezultati će biti dostupni u sučelju GitHub Actions.
5. Pregledajte rezultate Lighthouse CI-ja
Rezultati Lighthouse CI-ja bit će učitani na lokaciju navedenu u vašoj datoteci lighthouserc.js
(npr. temporary-public-storage
). Možete pristupiti tim rezultatima prateći poveznicu navedenu u izlazu CI/CD-a. Ovi rezultati pružaju detaljne informacije o performansama, pristupačnosti, SEO-u i najboljim praksama vaše web stranice.
Konfiguriranje provjera (Assertions) i budžeta za performanse
Lighthouse CI omogućuje vam konfiguriranje provjera (assertions) i budžeta za performanse kako biste osigurali da vaša web stranica ispunjava vaše ciljeve performansi. Provjere su pravila koja provjeravaju specifične metrike performansi (npr. First Contentful Paint, Largest Contentful Paint) u odnosu na unaprijed definirane pragove. Budžeti za performanse definiraju prihvatljive granice za različite metrike performansi.
Evo primjera kako konfigurirati provjere u vašoj datoteci lighthouserc.js
:
module.exports = {
ci: {
collect: {
url: ['http://localhost:3000']
},
assert: {
assertions: {
'first-contentful-paint': ['warn', { maxNumericValue: 2000 }],
'largest-contentful-paint': ['warn', { maxNumericValue: 2500 }],
'cumulative-layout-shift': ['warn', { maxNumericValue: 0.1 }],
'total-blocking-time': ['warn', { maxNumericValue: 500 }],
'categories:performance': ['warn', { minScore: 0.9 }],
'categories:accessibility': ['error', { minScore: 0.8 }],
}
},
upload: {
target: 'temporary-public-storage'
},
}
};
Objašnjenje:
first-contentful-paint
: Postavlja prag upozorenja za First Contentful Paint (FCP) na 2000 ms.largest-contentful-paint
: Postavlja prag upozorenja za Largest Contentful Paint (LCP) na 2500 ms.cumulative-layout-shift
: Postavlja prag upozorenja za Cumulative Layout Shift (CLS) na 0.1.total-blocking-time
: Postavlja prag upozorenja za Total Blocking Time (TBT) na 500 ms.categories:performance
: Postavlja prag upozorenja za ukupnu ocjenu kategorije performansi na 0.9.categories:accessibility
: Postavlja prag pogreške za ukupnu ocjenu kategorije pristupačnosti na 0.8.
Razine provjere:
off
: Onemogućuje provjeru.warn
: Prikazuje upozorenje ako provjera ne uspije.error
: Prekida izvođenje Lighthouse CI-ja ako provjera ne uspije.
Prilagođavanje provjera:
Možete prilagoditi provjere kako bi odgovarale vašim specifičnim potrebama. Na primjer, možda želite postaviti strože pragove za kritične metrike performansi ili onemogućiti provjere koje nisu relevantne za vašu aplikaciju.
Odabir cilja za učitavanje rezultata Lighthouse CI-ja
Opcija upload.target
u vašoj datoteci lighthouserc.js
određuje gdje će se rezultati Lighthouse CI-ja učitati. Cilj temporary-public-storage
je praktičan za testiranje i razvoj, but it's not suitable for production environments because the data is not persistent.
Evo nekih alternativnih ciljeva za učitavanje:
- Lighthouse CI poslužitelj: Preporučeni pristup za produkcijska okruženja je korištenje Lighthouse CI poslužitelja. Lighthouse CI poslužitelj pruža trajno rješenje za pohranu vaših rezultata, kao i korisničko sučelje za pregled i analizu vaših podataka. Može se implementirati na različite pružatelje usluga u oblaku ili hostirati na vlastitoj infrastrukturi.
- Google Cloud Storage: Možete učitati svoje rezultate Lighthouse CI-ja u Google Cloud Storage 'bucket'. Ovo je isplativo i skalabilno rješenje za pohranu vaših podataka.
- Amazon S3: Slično Google Cloud Storageu, možete učitati svoje rezultate Lighthouse CI-ja u Amazon S3 'bucket'.
Postavljanje Lighthouse CI poslužitelja:
Postavljanje Lighthouse CI poslužitelja uključuje sljedeće korake:
- Instalirajte Lighthouse CI poslužitelj: Možete instalirati Lighthouse CI poslužitelj koristeći npm ili yarn:
- Konfigurirajte bazu podataka: Lighthouse CI poslužitelj zahtijeva bazu podataka za pohranu svojih podataka. Možete koristiti različite baze podataka, uključujući PostgreSQL, MySQL i SQLite. Konfigurirajte postavke povezivanja s bazom podataka u datoteci
.env
. - Pokrenite Lighthouse CI poslužitelj: Pokrenite Lighthouse CI poslužitelj pomoću naredbe
lhci server
. - Konfigurirajte Lighthouse CI CLI za korištenje poslužitelja: Ažurirajte svoju datoteku
lighthouserc.js
kako biste koristili Lighthouse CI poslužitelj kao cilj za učitavanje:
npm install -g @lhci/server
yarn global add @lhci/server
module.exports = {
ci: {
collect: {
url: ['http://localhost:3000']
},
assert: {
preset: 'lighthouse:recommended'
},
upload: {
target: 'lhci',
serverBaseUrl: 'http://your-lhci-server.com',
token: 'YOUR_LHCI_TOKEN'
},
}
};
Zamijenite http://your-lhci-server.com
s URL-om vašeg Lighthouse CI poslužitelja i YOUR_LHCI_TOKEN
s pristupnim tokenom za vaš projekt.
Najbolje prakse za korištenje Lighthouse CI-ja
Da biste maksimalno iskoristili Lighthouse CI, slijedite ove najbolje prakse:
- Pokrećite Lighthouse CI pri svakoj promjeni koda: Integrirajte Lighthouse CI u svoj CI/CD cjevovod kako biste pokretali revizije pri svakoj promjeni koda. To će vam pomoći da rano uhvatite regresije u performansama.
- Postavite budžete za performanse: Definirajte budžete za performanse kako biste osigurali da vaša web stranica ostane unutar prihvatljivih pragova performansi.
- Pratite trendove performansi: Pratite performanse svoje web stranice tijekom vremena kako biste identificirali trendove i mjerili utjecaj svojih optimizacija.
- Prioritizirajte napore u optimizaciji: Prvo se usredotočite na optimizaciju najkritičnijih metrika performansi.
- Koristite podatke iz stvarnog svijeta: Koristite podatke iz stvarnog svijeta kako biste informirali svoje napore u optimizaciji. Na primjer, možete koristiti Google Analytics za identifikaciju stranica koje vaši korisnici najčešće posjećuju.
- Testirajte na stvarnim uređajima: Testirajte svoju web stranicu na stvarnim uređajima kako biste osigurali da dobro radi u stvarnim uvjetima.
- Redovito pregledavajte rezultate Lighthouse CI-ja: Pobrinite se da redovito pregledavate rezultate Lighthouse CI-ja i poduzimate korake za rješavanje svih identificiranih problema s performansama.
- Optimizirajte slike: Optimizirajte svoje slike kako biste smanjili njihovu veličinu datoteke bez žrtvovanja kvalitete. Alati poput ImageOptim (macOS), TinyPNG i ImageKit su korisni za to.
- Minificirajte CSS i JavaScript: Minificirajte svoje CSS i JavaScript datoteke kako biste smanjili njihovu veličinu. Alati poput UglifyJS i CSSNano mogu pomoći u tome.
- Iskoristite predmemoriranje preglednika (Browser Caching): Iskoristite predmemoriranje preglednika kako biste smanjili broj zahtjeva koje vaša web stranica upućuje poslužitelju.
- Koristite mrežu za isporuku sadržaja (CDN): Koristite CDN za distribuciju sadržaja vaše web stranice na poslužitelje diljem svijeta. To može poboljšati vrijeme učitavanja za korisnike na različitim geografskim lokacijama. Usluge poput Cloudflarea i Amazon CloudFronta su popularni CDN-ovi.
- Odgodite učitavanje slika izvan zaslona: Implementirajte lijeno učitavanje (lazy loading) za slike koje nisu odmah vidljive na zaslonu. To može značajno poboljšati početno vrijeme učitavanja stranice. Atribut
loading="lazy"
može se koristiti za jednostavno lijeno učitavanje. - Uklonite resurse koji blokiraju renderiranje: Identificirajte i uklonite resurse koji blokiraju renderiranje vaše stranice. To često uključuje umetanje kritičnog CSS-a (inlining) i odgađanje nekritičnog CSS-a i JavaScripta.
- Smanjite vrijeme izvršavanja JavaScripta: Profilirajte svoj JavaScript kod kako biste identificirali i optimizirali funkcije koje se sporo izvršavaju. Tehnike poput dijeljenja koda (code splitting) i 'tree shaking' mogu pomoći u smanjenju količine JavaScripta koji se treba preuzeti i izvršiti.
Napredne tehnike Lighthouse CI-ja
Kada se upoznate s osnovama Lighthouse CI-ja, možete istražiti neke napredne tehnike kako biste dodatno poboljšali praćenje performansi:
- Prilagođene Lighthouse revizije: Možete kreirati prilagođene Lighthouse revizije za testiranje specifičnih problema s performansama koji su relevantni za vašu aplikaciju.
- Konfiguracija Headless Chromea: Konfigurirajte Headless Chrome za korištenje specifičnih emulacija uređaja ili postavki za ograničavanje mreže (network throttling).
- Integracija s alatima za nadzor: Integrirajte Lighthouse CI s postojećim alatima za nadzor (npr. New Relic, Datadog) kako biste dobili sveobuhvatniji pregled performansi vaše web stranice.
- Testiranje vizualnih regresija: Kombinirajte Lighthouse CI s alatima za testiranje vizualnih regresija kako biste otkrili vizualne promjene koje mogu utjecati na performanse.
Lighthouse CI za globalnu publiku: Razmatranja za međunarodne web stranice
Kada koristite Lighthouse CI za web stranice namijenjene globalnoj publici, uzmite u obzir sljedeće:
- Testirajte s više lokacija: Vrijeme odgovora poslužitelja može značajno varirati ovisno o lokaciji korisnika. Koristite CDN (Content Delivery Network) i razmislite o pokretanju Lighthouse CI revizija s različitih geografskih regija kako biste dobili točniju sliku performansi za svoje međunarodne korisnike. Neki CI/CD pružatelji usluga nude opcije za određivanje geografske lokacije izvršitelja (runner).
- Uzmite u obzir mrežne uvjete: Brzine mreže i latencija uvelike variraju diljem svijeta. Simulirajte različite mrežne uvjete tijekom svojih Lighthouse CI revizija kako biste razumjeli kako se vaša web stranica ponaša pod različitim ograničenjima. Lighthouse vam omogućuje ograničavanje mrežne veze, simulirajući sporije veze poput 3G.
- Lokalizacija sadržaja: Osigurajte da je vaš lokalizirani sadržaj pravilno optimiziran. To uključuje optimizaciju slika za različite jezike i skupove znakova, te ispravno kodiranje kako bi se izbjegli problemi s prikazom.
- Učitavanje fontova: Optimizirajte učitavanje fontova za različite jezike. Razmislite o korištenju `font-display: swap` kako biste spriječili da tekst bude nevidljiv tijekom učitavanja fonta.
- Skripte trećih strana: Budite svjesni skripti trećih strana jer one mogu značajno utjecati na performanse, posebno za korisnike u regijama sa sporijim mrežnim vezama. Redovito provjeravajte performanse skripti trećih strana i razmislite o korištenju asinkronog učitavanja ili samostalnom hostingu kritičnih skripti.
- Optimizacija za mobilne uređaje: Korištenje mobilnih uređaja prevladava u mnogim dijelovima svijeta. Osigurajte da je vaša web stranica optimizirana za mobilne uređaje i da vaše Lighthouse CI revizije uključuju testove specifične za mobilne uređaje.
Rješavanje uobičajenih problema s Lighthouse CI-jem
Evo nekih uobičajenih problema na koje biste mogli naići pri korištenju Lighthouse CI-ja i kako ih riješiti:
- Lighthouse CI ne uspijeva s pogreškom "Timeout": To se može dogoditi ako se vašoj web stranici predugo učitava ili ako se Lighthouse CI ne može povezati s vašom web stranicom. Pokušajte povećati vrijednost vremenskog ograničenja (timeout) u vašoj datoteci
lighthouserc.js
ili provjerite zapisnike poslužitelja vaše web stranice za pogreške. - Lighthouse CI prijavljuje nedosljedne rezultate: Rezultati Lighthousea mogu se neznatno razlikovati između pokretanja zbog mrežnih uvjeta ili drugih čimbenika. Pokrenite više revizija kako biste dobili stabilniji prosjek.
- Lighthouse CI ne uspijeva učitati rezultate: Provjerite svoju konfiguraciju
upload.target
i osigurajte da vaš Lighthouse CI poslužitelj radi i da je dostupan. Također, provjerite imate li ispravno konfiguriran pristupni token. - Lighthouse CI prijavljuje neočekivane regresije u performansama: Istražite promjene koda koje su napravljene prije nego što je regresija otkrivena. Koristite izvješća Lighthouse CI-ja kako biste identificirali specifične metrike performansi koje su se pogoršale i usmjerite svoje napore u optimizaciju na ta područja.
Zaključak
Frontend Lighthouse CI je moćan alat za kontinuirano praćenje performansi web aplikacija. Integracijom Lighthouse CI-ja u svoj CI/CD cjevovod, možete proaktivno identificirati i rješavati probleme s performansama, osiguravajući da vaša web stranica pruža optimalno korisničko iskustvo. Ne zaboravite prilagoditi svoje postavke, pravila provjere i lokacije testiranja za globalnu publiku kako biste stvorili najbolje moguće iskustvo za korisnike diljem svijeta.
Slijedeći korake i najbolje prakse navedene u ovom vodiču, možete značajno poboljšati performanse svoje web stranice, smanjiti stope napuštanja stranice, povećati stope konverzije i, u konačnici, postići svoje poslovne ciljeve. Počnite s implementacijom Lighthouse CI-ja danas i otključajte puni potencijal svojih web aplikacija.