6. modulis · 6.1
Kas padara tīmekļa vietni lēnu un kā to izmērīt?
6. modulis: Ātrdarbība · Lasīšanas laiks: 9 minūtes
Mācību mērķis: Pēc šīs nodarbības Jūs varēsiet izmērīt, kur pazūd laiks, un atpazīt atšķirību starp lēnumu servera pusē un lēnumu pārlūkprogrammā.
Galvenie jēdzieni: TTFB, Core Web Vitals (LCP, INP, CLS), laboratorijas dati, lauka dati, PageSpeed Insights, tīkla cilne, saspiešana, ārējie skripti, mitināšanas pakotnes ierobežojumi, 503
Vispirms mērīt, tad labot
"Tīmekļa vietne ir lēna" var būt desmit dažādu iemeslu dēļ. Ja kāds bez mērīšanas vienlaikus uzstāda kešatmiņas spraudni, attēlu optimizācijas spraudni un izvēlas lielāku pakotni, pēc tam nav zināms, kas tieši palīdzēja, un klāt nākušas vēl trīs lietas, kas jāuzrauga. Tāpēc vienmēr sāciet ar trim jautājumiem (tādiem pašiem, kādi ir Jūsu mitināšanas pakalpojumu sniedzēja rokasgrāmatā):
- Viss ir lēns, vai tikai panelis? Lēns panelis ar ātru priekšējo daļu norāda uz spraudņiem, kas paneli lielā mērā noslogo, vai botiem, kas uzbrūk pieteikšanās lapai.
- Vienmēr, vai tikai noteiktos brīžos? Ja tas notiek tikai noslogotos laikos vai kad darbojas plānots uzdevums, tad Jūsu pakotne sasniedz savus ierobežojumus.
- Visiem, vai tikai Jums? Pamēģiniet to savā tālrunī, izmantojot 4G vai 5G, vai palūdziet kādam citam pārbaudīt. Ja tas ir lēns tikai Jums, iemesls ir Jūsu savienojumā vai VPN.
Divas puses: serveris un pārlūkprogramma
Laiks, ko apmeklētājs gaida, sastāv no divām daļām (nodarbība 1.2):
- Serveris izveido HTML: tīmekļa serveris, PHP, spraudņi, datubāze. To redzat kā TTFB (time to first byte), laiku līdz atbildes pirmajam baitam. web.dev kā aptuvenu vadlīniju min, ka vairumam tīmekļa vietņu jātiecas uz TTFB 0,8 sekundes vai mazāk.
- Pārlūkprogramma nolasa šo HTML un pēc tam ielādē visu, kas tajā norādīts: stila lapas, skriptus, fontus, attēlus, video, mērījumu kodus, tērzēšanas logrīkus. Tikai tad, kad pietiekami daudz no tā ir ielādēts, apmeklētājs kaut ko redz.
Augsts TTFB jārisina servera pusē: kešatmiņa (nodarbība 6.2), mazāk vai vieglāki spraudņi, jaunāka PHP versija, sakārtota datubāze (nodarbība 6.3) vai lielāka jauda. Zems TTFB, bet tomēr lēna lapa norāda uz pārlūkprogrammas pusi: pārāk lieli attēli, pārāk daudz skriptu, ārēji komponenti.
Core Web Vitals
Google mēra apmeklētāju pieredzi ar trim rādītājiem, Core Web Vitals:
| Mērījums | Ko tas mēra | Labs, ja |
|---|---|---|
| LCP (Largest Contentful Paint) | Cik ātri parādās lielākais satura gabals (bieži lielā fotogrāfija vai virsraksts) | 2,5 sekundes vai mazāk |
| INP (Interaction to Next Paint) | Cik ātri lapa reaģē, kad klikšķināt, pieskaraties vai rakstāt | 200 milisekundes vai mazāk |
| CLS (Cumulative Layout Shift) | Cik ļoti lapa pārvietojas ielādes laikā | 0,1 vai mazāk |
INP 2024. gada martā aizstāja vecāko mērījumu FID. Google šos rādītājus cita starpā izmanto meklēšanas rezultātu secības noteikšanā, taču galvenais iemesls tos uzlabot ir vienkāršs: apmeklētāji pamet lēnu vai lēkājošu lapu.
Laboratorijas dati un lauka dati
Pastāv divu veidu mērījumi, un tie dod atšķirīgus skaitļus:
- Laboratorijas dati (labdata): tests vienā brīdī, no vienas vietas, ar simulētu tālruni un savienojumu. Noderīgs salīdzināšanai (pirms un pēc izmaiņām), taču tas nav īsts apmeklētājs.
- Lauka dati (velddata): mērījumi no reāliem apmeklētājiem, kuri izmanto Chrome, pēdējo 28 dienu laikā. Tas ir tas, ko apmeklētāji patiešām piedzīvo. Mazām tīmekļa vietnēm bieži ir pārāk maz apmeklētāju lauka datiem.
PageSpeed Insights (pagespeed.web.dev) parāda abus: augšpusē lauka datus (ja tādi ir pieejami), zem tiem laboratorijas testu ar vērtējumu un konkrētiem ieteikumiem. Neskatieties akli uz vērtējumu no 0 līdz 100. Skatieties uz sastāvdaļām: vai LCP ir slikts tāpēc, ka serveris ir lēns (TTFB), vai tāpēc, ka lielā fotogrāfija ir 3 MB liela?
Vienmēr testējiet vairākas reizes (skaitļi mainās) un testējiet arī parastu lapu, nevis tikai sākumlapu.
Paskatieties paši, izmantojot pārlūkprogrammu
Jūsu pārlūkprogrammas izstrādātāja rīki (F12) parāda, kas patiešām notiek:
- Cilne Tīkls: atsvaidziniet lapu ar izslēgtu kešatmiņu (atzīmējiet "Izslēgt kešatmiņu"). Jūs redzēsiet katru ielādēto failu, tā izmēru un ielādes ilgumu. Kārtojiet pēc izmēra: lielākie faili bieži ir attēli. Kārtojiet pēc domēna: cik daudz nāk no citām pusēm (fonti, mērījumu kodi, video)?
- Pirmais pieprasījums (pats HTML): noklikšķiniet uz tā, cilne Timing. "Waiting for server response" ir TTFB.
- Šī pirmā pieprasījuma galvenes: vai ir saspiešana (
content-encoding: brvaigzip), un vai lapa nāca no kešatmiņas (nodarbība 6.2)?
Parastie vaininieki
Praksē WordPress lēnums parasti rodas kāda no šiem iemesliem dēļ:
- Nav lapu kešatmiņas: katra lapa tiek veidota no jauna ikreiz, kad to apmeklē (nodarbība 6.2).
- Pārāk daudz vai smagi spraudņi, īpaši spraudņi, kas katrā pieprasījumā izsauc ārējus pakalpojumus vai veic smagus vaicājumus (nodarbība 5.3).
- Lieli attēli: 5 MB liela tālruņa fotogrāfija sākumlapā (nodarbība 4.4 un 6.3).
- Smaga tēma vai lapu veidotājs, kas katrā lapā ielādē daudz skriptu un stila lapu (nodarbība 5.1).
- Ārēji komponenti: fonti, video, tērzēšanas logrīki, mērījumu kodi, citu pušu sociālo tīklu pogas. Katrs no tiem ir savienojums ar citu serveri, kas var būt lēns.
- Veca PHP versija (nodarbība 8.4).
- Nesakārtota datubāze: tūkstošiem redakciju, surogātpasts, spraudņu žurnālu tabulas (nodarbība 6.3).
- Boti: rāpuļprogrammas, MI rāpuļprogrammas un pieteikšanās mēģinājumi noslogo Jūsu pakotni (nodarbība 7.3).
- Pakotne sasniedz savus ierobežojumus: pārāk maz skaitļošanas jaudas (CPU), procesu vai atmiņas attiecībā pret apmeklētāju plūsmu.
Jūsu pakotnes ierobežojumi
Koplietotā mitināšanā katra pakotne saņem fiksētu servera daļu: skaitļošanas jaudu, atmiņu, diska ātrumu un noteiktu skaitu vienlaicīgu procesu. Ja Jūsu tīmekļa vietne izmanto vairāk, tā tiek palēnināta, vai apmeklētāji saņem kļūdas paziņojumu 503 (Service Unavailable, dažiem mitināšanas pakalpojumu sniedzējiem "Resource Limit Is Reached"). DirectAdmin ar CloudLinux to redzat sadaļā Resource Usage (ar "faults", ja Jūsu tīmekļa vietne tika palēnināta), un ar X-Ray Jūs redzat katrai lapai, kurš spraudnis vai vaicājums patērē laiku. Citiem mitināšanas pakalpojumu sniedzējiem ir līdzīgi pārskati, dažkārt tikai pēc pieprasījuma.
Lielāka pakotne palīdz, ja Jūsu tīmekļa vietnei patiešām vajag vairāk (noslogots tiešsaistes veikals). Tā neatrisina slikti sakārtotu tīmekļa vietni: problēma tad atgriezīsies vēlāk. Vispirms meklējiet cēloni.
Kopsavilkums
- Vispirms izmēriet: viss vai tikai panelis, vienmēr vai dažreiz, visiem vai tikai Jums.
- TTFB ir servera puse (tiecieties uz 0,8 sekundēm vai mazāk); pārējais ir tas, ko ielādē pārlūkprogramma.
- Core Web Vitals: LCP (2,5 s), INP (200 ms) un CLS (0,1); INP 2024. gadā aizstāja FID.
- PageSpeed Insights parāda lauka datus un laboratorijas datus; tīkla cilne parāda, kas patiešām tiek ielādēts.
- Lielākā daļa lēnuma rodas no kešatmiņas trūkuma, smagiem spraudņiem, lieliem attēliem un ārējiem komponentiem; lielāka pakotne ir pēdējais, nevis pirmais solis.
Tests
Uzdevums
Uzdevums A6.1: Nomēriet savu TTFB un saspiešanu. Ievadiet savas tīmekļa vietnes adresi un, ja vēlaties, vienu parastu lapu (piemēram, Jūsu kontaktu lapu). Programma katru lapu pieprasa trīs reizes bez sīkdatnēm un parāda vidējo TTFB, HTML izmēru un to, vai serveris sūta saspiestu HTML (content-encoding gzip vai br). Salīdziniet rezultātu ar testu PageSpeed Insights un pierakstiet, kas Jums šķiet pamanāms.
Papildu lasāmviela
Šie raksti apraksta soļus WebOké paneļos; citos paneļos tie darbojas līdzīgi.
- DirectAdmin rokasgrāmata 18.3: Mana vietne darbojas lēni
- DirectAdmin rokasgrāmata 17.3: Resource Usage: CPU, atmiņa un procesi
- DirectAdmin rokasgrāmata 17.4: X-Ray: lēnu lapu noteikšana
- DirectAdmin rokasgrāmata 17.5: 503 of 'Resource Limit Is Reached': ko tagad darīt?
- Jūsu tīmekļa vietne darbojas lēni vai izmanto pārāk daudz CPU: kā padarīt to ātrāku
- Core Web Vitals (web.dev, angļu valodā): https://web.dev/articles/vitals
- PageSpeed Insights: https://pagespeed.web.dev/
