Výkon
Jak dlouho jádro frameworku sestavuje stránku, změřeno v izolovaném lokálním prostředí. Není to test rychlosti webu.
Co se měří
Doba, kterou jádro frameworku potřebuje k sestavení stránky: od začátku skriptu požadavku přes autoloader, trasu, Site, její Section, Box a Model a Renderer až po okamžik, kdy je odpověď připravená k odeslání.
Není to rychlost webu. Měření vynechává síť, webový server, hosting i prohlížeč. Jak rychle web působí, závisí také na jeho obsahu, obrázcích, skriptech, hostingu a připojení návštěvníka, a proto WBengine žádné číslo pro to neuvádí. Měření prohlížeče, například vykreslení největšího prvku (LCP), je mnohem větší než doba níže: zahrnuje síť a vykreslení.
Výsledky
Doba v PHP do okamžiku, kdy je odpověď připravená, v izolovaném lokálním prostředí, a počet SQL dotazů tohoto požadavku.
| Případ | Medián | 95. percentil | Požadavků za sekundu | SQL dotazů |
|---|---|---|---|---|
| Anonymní návštěvník, žádná cache | 7,1 ms | 10,7 ms | 428 | 6 |
| Anonymní návštěvník, zahřátá cache dat | 5,7 ms | 7,6 ms | 488 | 2 |
| Anonymní návštěvník, zásah cache celé stránky | 1,8 ms | 2,2 ms | 1 308 | 0 |
| Přihlášený uživatel, žádná cache | 12,4 ms | 13,0 ms | 284 | 10 |
| Přihlášený uživatel, zahřátá cache dat | 10,3 ms | 11,4 ms | 345 | 6 |
| Trasa, která odpovídá bez stránky | 1,6 ms | 1,8 ms | 1 466 | 0 |
Úvodní stránka této kostry se sestaví asi za 7 ms s vypnutými cache, asi za 6 ms se zahřátou cache dat a asi za 2 ms z cache celé stránky. Přihlášený uživatel se z cache celé stránky nikdy nepodává. Požadavky za sekundu platí pro čtyři klienty najednou.
Jak se měřilo
- listopadu 2026 s WBengine 6.7.0, PHP 8.4.27 a MySQL 8.4.13, v izolovaném projektu Docker Compose na vývojářském notebooku. Vestavěný server PHP se čtyřmi procesy, klient na stejném počítači (bez sítě), OPcache zapnutý jako na produkčním serveru, 20 požadavků na případ, každý na novém spojení. Data byla z této kostry: 24 stránek, 17 článků a 29 boxů. Počítají se všechny SQL dotazy frameworku.
Běh s vypnutým OPcache dal mediány, které se lišily nejvýše asi o milisekundu (v obou během 7,1 ms pro anonymního návštěvníka bez cache), takže tato čísla na OPcache nezávisejí. Celý požadavek HTTP včetně spojení a přenosu trval asi o 0,4 ms déle než doba v PHP.
Jak to zopakovat
V prostředí připraveném jako pro smoke test kostry (viz README):
docker compose -p wbengine-skeleton-modernization -f compose.smoke.yml run --rm -T tools php tests/benchmark-cms.php
Výsledek se vypíše jako JSON. S -e WB_BENCHMARK_OPCACHE=0 běží server bez OPcache. Zaznamenaný výsledek běhu výše je v tests/benchmark-cms-result.json.
Na co pamatovat
- Test na notebooku není příslib pro váš server. Rozhoduje hardware, velikost databáze, počet boxů na stránce a nastavení PHP.
- Každý případ má 20 vzorků, takže 95. percentil je blízko nejpomalejšímu požadavku. Než se na čísla spolehnete, zopakujte test na vlastním hardwaru.
- Stránka s více boxy a dotazy trvá déle než úvodní stránka této kostry. Právě pro to existují cache: viz Cache.
- Není to srovnání s jinými frameworky.