| DNS resolution | Time to first response, number of DNS providers queried | A fast DNS provider, fewer distinct domains, preconnect where justified |
| Connection and TLS | Negotiation duration, protocol version, session reuse | HTTP/2 or HTTP/3, TLS session resumption, removing redirects that force reconnection |
| Time to first byte | Separately for cached and uncached pages | Page cache, object cache, slow queries, PHP version, distance to the user |
| Render blocking | Which CSS and JS files stop display, and for how long | Critical CSS delivered inline, the rest deferred, non-essential scripts moved off the critical path |
| Largest contentful paint | Which element it is, how long it takes, what delays it | Preloading the correct resource, sizing the image, eliminating chained request waterfalls |
| Interaction delay | How long until the page responds to the first tap or press | Reducing main thread work, breaking up long tasks, delaying third party scripts until interaction |
| Layout stability | How much content jumps during load and because of what | Explicit dimensions on images and iframes, space reserved for ads and banners, fonts loaded without shift |
| Fonts | Number of families, weights, formats, display behaviour | Only the weights actually used, modern format, character subsetting, display without invisible text |
| Images | Transferred size against displayed size, format, load timing | Modern format, multiple sizes per screen, deferred loading below the fold but never for the main image |
| Third party scripts | Every external domain, what it brings, what it weighs, how long it holds the main thread | Removing unused ones, delaying non-essential ones, moving tracking somewhere it does not block |
| Database | Slow queries, bloated tables, excessive autoload, scheduled tasks | Indexing, cleanup, moving heavy tasks out of the visitor request |