6 modulis · 6.1
Kas lemia svetainės lėtumą ir kaip tai išmatuoti?
6 modulis: Greitis · Skaitymo trukmė: 9 min.
Mokymosi tikslas: Po šios pamokos galėsite išmatuoti, kur prarandamas laikas, ir atskirti lėtumą serverio pusėje nuo lėtumo naršyklės pusėje.
Pagrindinės sąvokos: TTFB, Core Web Vitals (LCP, INP, CLS), laboratoriniai duomenys (labdata), lauko duomenys (velddata), PageSpeed Insights, tinklo skirtukas, kompresija (glaudinimas), išoriniai scenarijai, talpinimo paketo apribojimai, 503
Pirmiausia matuokite, tik tada taisykite
„Svetainė veikia lėtai" gali turėti dešimt skirtingų priežasčių. Jei iš karto, nepasimatavus, įdiegiate talpyklos (cache) įskiepį, atvaizdų optimizavimo įskiepį ir didesnį paketą, po to nežinosite, kas iš tikrųjų padėjo, o prižiūrėti teks tris dalykus vietoj vieno. Todėl visada pradėkite nuo trijų klausimų (tų pačių, kurie pateikiami Jūsų talpinimo paslaugų teikėjo instrukcijose):
- Lėta viskas, ar tik administravimo skydelis? Lėtas administravimo skydelis kartu su greita svetainės priekine dalimi rodo, kad kažkuris įskiepis administravimo srityje atlieka daug veiksmų, arba kad prisijungimo puslapį atakuoja robotai (botai).
- Visada, ar tik tam tikrais momentais? Jei lėta tik tuo metu, kai apsilankymų daug, arba kai vykdoma suplanuota užduotis, vadinasi, Jūsų paketas pasiekia savo ribas.
- Visiems, ar tik Jums? Pabandykite atverti svetainę telefone per 4G arba 5G ryšį arba paprašykite kito asmens patikrinti. Jei lėta tik Jums, priežastis gali būti Jūsų interneto ryšys arba VPN.
Dvi pusės: serveris ir naršyklė
Laikas, kurį laukia lankytojas, susideda iš dviejų dalių (pamoka 1.2):
- Serveris sukuria HTML kodą: žiniatinklio serveris, PHP, įskiepiai, duomenų bazė. Tai matote kaip TTFB (time to first byte, laikas iki pirmojo baito), tai yra laikas iki pirmojo atsakymo baito. web.dev pagal bendrą taisyklę nurodo, kad dauguma svetainių turėtų siekti TTFB rodiklio, lygaus 0,8 sekundės arba mažiau.
- Naršyklė perskaito šį HTML kodą ir tada parsisiunčia visa, kas jame nurodyta: stilių aprašus (stylesheets), scenarijus, šriftus, atvaizdus, vaizdo įrašus, matavimo kodus, pokalbių valdiklius (chat widgets). Tik kai pakankama dalis to visko gauta, lankytojas pamato turinį.
Didelį TTFB sprendžiate serverio pusėje: talpykla (cache) (pamoka 6.2), mažiau ar lengvesni įskiepiai, naujesnė PHP versija, sutvarkyta duomenų bazė (pamoka 6.3) arba daugiau skaičiavimo galios. Jei TTFB žemas, bet puslapis vis tiek krauna lėtai, priežastis slypi naršyklės pusėje: per dideli atvaizdai, per daug scenarijų, išoriniai komponentai.
Core Web Vitals
Google matuoja lankytojų patirtį trimis rodikliais, vadinamais Core Web Vitals:
| Rodiklis | Ką jis matuoja | Gerai, kai |
|---|---|---|
| LCP (Largest Contentful Paint) | Kaip greitai matomas didžiausias turinio elementas (dažniausiai didelė nuotrauka arba antraštė) | 2,5 sekundės arba mažiau |
| INP (Interaction to Next Paint) | Kaip greitai puslapis reaguoja, kai spustelėjate, paliečiate ar rašote | 200 milisekundžių arba mažiau |
| CLS (Cumulative Layout Shift) | Kiek puslapio išdėstymas pasislenka krovimo metu | 0,1 arba mažiau |
2024 m. kovo mėnesį INP pakeitė senesnį rodiklį FID. Google šiuos rodiklius naudoja, be kita ko, reitinguodamas paieškos rezultatus, tačiau svarbiausia priežastis juos gerinti yra paprasta: lankytojai pasitraukia iš lėtai krauname arba pasislenkančio puslapio.
Laboratoriniai ir lauko duomenys
Yra du matavimų tipai, ir jie pateikia skirtingus skaičius:
- Laboratoriniai duomenys (labdata): vienkartinis testas tam tikru momentu, iš vienos vietos, naudojant imituotą telefoną ir ryšį. Naudinga lyginti (prieš ir po pakeitimo), tačiau tai nėra tikras lankytojas.
- Lauko duomenys (velddata): matavimai, gauti iš tikrų lankytojų, naudojančių Chrome, per pastarąsias 28 dienas. Tai atspindi, ką lankytojai iš tikrųjų patiria. Mažoms svetainėms dažnai trūksta lankytojų, kad būtų surinkta pakankamai lauko duomenų.
PageSpeed Insights (pagespeed.web.dev) rodo abu duomenų tipus: viršuje lauko duomenis (jei tokių yra), žemiau laboratorinio testo rezultatą su balu ir konkrečiomis rekomendacijomis. Nežiūrėkite akląja tik į balą nuo 0 iki 100. Pažiūrėkite į sudedamąsias dalis: ar LCP blogas todėl, kad serveris lėtas (TTFB), ar todėl, kad didelė nuotrauka sveria 3 MB?
Visada testuokite kelis kartus (skaičiai kinta) ir testuokite ne tik pradinį puslapį, bet ir įprastą puslapį.
Patikra naršyklės priemonėmis
Jūsų naršyklės kūrėjo priemonės (F12) parodo, kas iš tikrųjų vyksta:
- Tinklo skirtukas: atnaujinkite puslapį be talpyklos (pažymėkite varnelę „Išjungti talpyklą"). Matysite kiekvieną įkeliamą failą, jo dydį ir trukmę. Rikiuokite pagal dydį: didžiausi failai dažniausiai yra atvaizdai. Rikiuokite pagal domeną: kiek turinio ateina iš kitų šalių (šriftai, matavimo kodai, vaizdo įrašai)?
- Pirmasis užklausimas (pats HTML kodas): spustelėkite jį, skirtukas Timing. „Waiting for server response" yra TTFB.
- Antraštės (headers) šio pirmojo užklausimo: ar yra kompresija (
content-encoding: brarbagzip) ir ar puslapis buvo gautas iš talpyklos (pamoka 6.2)?
Dažniausios lėtumo priežastys
Praktikoje WordPress svetainių lėtumą dažniausiai lemia viena iš šių priežasčių:
- Nėra puslapio talpyklos (paginacache): kiekvienas puslapis kuriamas iš naujo kiekvieno apsilankymo metu (pamoka 6.2).
- Per daug arba per sudėtingi įskiepiai, ypač tie, kurie kiekvienos užklausos metu kreipiasi į išorines paslaugas arba atlieka sudėtingas duomenų bazės užklausas (pamoka 5.3).
- Dideli atvaizdai: 5 MB dydžio telefonu daryta nuotrauka pradiniame puslapyje (pamokos 4.4 ir 6.3).
- Sudėtinga tema arba puslapių kūrimo įrankis, kuris kiekviename puslapyje įkelia daug scenarijų ir stilių aprašų (pamoka 5.1).
- Išoriniai komponentai: šriftai, vaizdo įrašai, pokalbių valdikliai, matavimo kodai, socialinių tinklų mygtukai iš kitų šalių. Kiekvienas iš jų yra ryšys su kitu serveriu, kuris gali veikti lėtai.
- Sena PHP versija (pamoka 8.4).
- Netvarkinga duomenų bazė: tūkstančiai revizijų, šlamštas (spam), įskiepių žurnalų lentelės (pamoka 6.3).
- Robotai (botai): tinklalapių skenavimo robotai, DI robotai ir prisijungimo bandymai apkrauna Jūsų paketą (pamoka 7.3).
- Paketas pasiekia savo ribas: per mažai skaičiavimo galios (CPU), procesų arba atminties esamam srautui.
Jūsų paketo ribos
Naudojant bendrą talpinimą, kiekvienas paketas gauna fiksuotą serverio dalį: skaičiavimo galią, atmintį, disko greitį ir tam tikrą vienu metu vykstančių procesų skaičių. Jei Jūsų svetainė naudoja daugiau, ji sulėtinama arba lankytojai gauna klaidos pranešimą 503 (Service Unavailable, kai kuriuose talpinimo paslaugų teikėjuose „Resource Limit Is Reached"). DirectAdmin su CloudLinux tai matote skiltyje Resource Usage (su „faults" žyma, jei Jūsų svetainė buvo sulėtinta), o naudodami X-Ray galite matyti, kuris įskiepis ar užklausa kiekviename puslapyje naudoja daugiausiai laiko. Kiti talpinimo paslaugų teikėjai turi panašias apžvalgas, kartais pateikiamas tik pagal pareikalavimą.
Didesnis paketas padeda, jei Jūsų svetainei iš tikrųjų reikia daugiau išteklių (pavyzdžiui, aktyviai lankomai internetinei parduotuvei). Tačiau jis neišsprendžia blogai sutvarkytos svetainės problemos: problema vėliau grįš. Pirmiausia suraskite priežastį.
Santrauka
- Pirmiausia matuokite: viskas ar tik administravimo skydelis, visada ar kartais, visiems ar tik Jums.
- TTFB yra serverio pusė (siekite 0,8 sekundės arba mažiau); likusi dalis yra tai, ką įkelia naršyklė.
- Core Web Vitals: LCP (2,5 s), INP (200 ms) ir CLS (0,1); 2024 m. INP pakeitė FID.
- PageSpeed Insights rodo lauko duomenis ir laboratorinius duomenis; tinklo skirtukas parodo, kas iš tikrųjų kraunama.
- Dažniausia lėtumo priežastis yra talpyklos nebuvimas, sudėtingi įskiepiai, dideli atvaizdai ir išoriniai komponentai; didesnis paketas yra paskutinis žingsnis.
Testas (quiz)
Užduotis
Užduotis A6.1: Išmatuokite savo TTFB ir glaudinimą (kompresiją). Įveskite savo svetainės adresą ir, jei norite, vieną įprastą puslapį (pavyzdžiui, kontaktų puslapį). Programa kiekvieną puslapį paprašys tris kartus be slapukų ir pateiks vidurinį TTFB rodiklį, HTML dydį bei informaciją, ar serveris siunčia suglaudintą HTML (content-encoding gzip arba br). Palyginkite rezultatą su PageSpeed Insights testo rezultatu ir užsirašykite, kas Jums krito į akis.
Papildoma literatūra
Šiuose straipsniuose aprašomi veiksmai WebOké valdymo skydeliuose; kituose skydeliuose veikimo principas panašus.
- DirectAdmin vadovas 18.3: Mano svetainė lėtai veikia
- DirectAdmin vadovas 17.3: Resource Usage: CPU, atmintis ir procesai
- DirectAdmin vadovas 17.4: X-Ray: lėtų puslapių aptikimas
- DirectAdmin vadovas 17.5: 503 arba „Resource Limit Is Reached“: ką daryti?
- Mano svetainė veikia lėtai arba naudoja per daug CPU: kaip ją paspartinti
- Core Web Vitals (web.dev, anglų kalba): https://web.dev/articles/vitals
- PageSpeed Insights: https://pagespeed.web.dev/
