Typy měření rychlosti webu: syntetika, Chrome UX Report a Real User Monitoring
Pojďme si v tomto textu ujasnit rozdíly mezi různými typy měření rychlosti webu. Pobavme se o syntetice („synth“), datech od uživatelů Googlu („CrUX“) a datech od všech uživatelů („RUM“).
CrUX jako základ, synth jako nutný doplněk
Základem je vždy mít data od uživatelů Googlu (Chrome UX Report, CrUX), které výborně měří uživatelskou zkušenost a zároveň ovlivňují organickou návštěvnost nebo cenu za proklik v Google Ads.
Čísla od uživatelů Googlu v našem testeru rychlosti doplňujeme syntetickými měřeními (tzv. „synth“), která získáváme každý den a která nám umožňují hlídat hodnoty metrik nebo hledat konkrétní problémy.
Syntetika a CrUX, bez nich by to nešlo.
U větších webů nebo v opodstatněných případech doplňujeme CrUX a syntetiku pro poradenství k rychlosti webu monitoringem všech uživatelů (Real User Monitoring, RUM).
Syntetická data (synth)
Data se získávají strojem, např. pomocí Lighthouse nebo WebpageTest.org.
- Výhoda je detailní report o rychlosti.
- Nevýhoda je, že jde jen o report k prvnímu načtení, takže uživatelské metriky jako INP nebo CLS zde nejsou nebo jsou nepřesné.
V našem monitoringu k testování používáme vlastní Lighthouse.
Data od uživatelů Googlu (CrUX)
Data z Chrome UX Reportu (zkráceně CrUX) pocházejí přímo od uživatelů prohlížeče Google Chrome.
- Výhoda: jsou zde všechny metriky Core Web Vitals přímo od uživatelů.
- Nevýhoda: data máme jen kumulativně za posledních 28 dní a většinou jen pro celou doménu, nikoliv konkrétní URL.
V našem monitoringu PLUS stahujeme data pro jednotlivé stránky z CrUX API. Data pro měsíční grafy v reportu „Domény“ pak z Chrome UX Reportu na BigQuery.
Data od všech uživatelů (RUM)
Tzv. Real User Monitoring (RUM) může sbírat informace od všech uživatelů nebo od jejich vzorku.
- Výhoda: data sbíraná javascriptem máme okamžitě.
- Nevýhoda: je to drahé, náročné na implementaci a vyhodnocování a vrací to jiné hodnoty než CrUX.
Monitoring PageSpeed.cz v tuto chvíli RUM data nesbírá. My sami tato data doporučujeme sbírat jen u větších webů nebo v případě, že máte specifické důvody (např. optimalizace metriky INP) a používáme pro tyto účely SpeedCurve RUM.
Rozdíly mezi konkrétními metrikami
Velmi zhruba řečeno jsou u Web Vitals rozdíly ve sběru v syntetice, CrUX a RUM následující:
- LCP (rychlost načtení) – sbírá se všude stejně. Jen u syntetických měření je posbíráno z konkrétního měření nebo třeba mediánu měření, takže pro celou doménu je to u syntetiky velmi nepřesné.
- CLS (posun layoutu) – mohou být velké rozdíly. V syntetice se zpravidla měří jen první načtení stránky. V případě RUM se výpočet CLS zastaví, když jsou odeslána data. U CrUX však měření pokračuje, dokud se uživatel nepřepne do jiného okna.
- INP (rychlost interakce) – mohou být velké rozdíly. V syntetice se obvykle INP nezměří, v RUM i CrUX se měří kumulativně pro konkrétní stránky.
Zde je potřeba upozornit, že data se liší i napříč různými nástroji pro měření a jsou citlivé na nastavení těchto nástrojů.
Dále dostanete různé výsledky pro MPA aplikace (každá stránka se načte ze serveru) a SPA (ze serveru se načte jen první stránka). Zjednodušeně řečeno u SPA platí, že CLS i INP se měří kumulativně pro celou session. Viz také článek o SPA a Web Vitals na web.dev.
Ukázka rozdílů mezi metrikami
Podívejme se na příklad od jednoho našeho klienta, pro kterého jsme dělali RUM analýzu, jak moc se mohou lišit metriky napříč měřeními:
synth | RUM | CrUX | |
---|---|---|---|
LCP | 1,57 s | 1,66 s | 2,22 s |
CLS | 0,01 | 0 | 0,05 |
INP | - | 136 ms | 310 ms |
Několik poznámek k tabulce:
- Horší metrika LCP u CrUX (data z Chrome UX Reportu) oproti RUM je vysvětlitelná horšími zařízeními, protože CrUX na mobilech se sbírá jen na Androidu.
- Syntetika je limitovaná jen na pár testů na pár zařízeních, proto její hodnoty nebereme tak vážně, ale zase nám pomáhá s monitoringem změn na webu, viz např. report Hlídač.
- Metriku INP syntetika neposbírá. V CrUX se u aplikací typu SPA data kumulují, proto zde budou vždy horší.
- Stejně tak může být na CrUX nejhorší metrika CLS. Počítá se totiž po celou dobu používání stránky, nikoliv jen při prvním loadu (syntetika) nebo do odeslání měřících dat (RUM).
Pokud vás problematika zajímá více, mrkněte se na článek o rozdílech mezi CrUX a RUM podle web.dev.