Skip to content

Performance layers

A page reaches your visitor in steps. The request travels over the network to your server, the server runs WordPress, a cache may answer instead, a CDN may deliver copies from nearby, and finally the browser turns everything into a page. Permo sorts what it measures into these six layers: Network, Server, WordPress, Cache, CDN and Browser.

A slow page rarely has one cause, and the causes sit in different places. The layers help to find the right one, and they build on each other: a cache can hide a slow server from most visitors, but it doesn’t fix it. Logged-in users, the first visitor after the cache was cleared and every page the cache can’t store still wait for WordPress and the server. Smaller images don’t help much either when the server needs three seconds to answer.

That’s why it’s worth looking at the lower layers first. The scores and metrics that Google reports, such as Largest Contentful Paint, sum up all layers at once. Permo shows them as results; the layers show where the time goes.

Network: the way from the visitor’s device to your server: finding the server’s address (DNS), connecting, and setting up encryption (TLS). It depends on where your visitors and your server are, and on your DNS provider.

Server: the hosting: processors, memory, the PHP version and its settings, the database server. On shared hosting, other sites share the same machine. Permo measures load per CPU core, PHP memory and database response time.

WordPress: what WordPress, the theme and the plugins do to build a page. Permo loads each monitored page itself, past the page cache, and measures how long WordPress takes; see uncached server response time.

Cache: stored results that save work, above all the page cache, which hands out finished pages without running WordPress. Google’s test shows how fast your server answers when a cache can help; see server response time.

CDN: a network of servers close to your visitors that delivers copies of your pages and files, if you use one.

Browser: what the browser has to do with the page: download the files, run JavaScript, work out the layout and draw. Permo shows main-thread work, JavaScript execution time and the HTML size.

Dashboard, Where to start: lists the six layers from the network up, each with its state:

  • Needs attention in red, only when Permo measured the layer slow again and again, that is, when one of its notifications is open, even if you dismissed or muted it. The lowest red layer is marked as the place to start.
  • No lasting problem when the measurements are fine.
  • Needs an API key for the parts that come from Google’s test.
  • Not measured for Network and CDN. Permo runs on your server and can’t see the way from your visitors to it. For Network, the Dashboard shows a short command you can run on your own computer to time DNS, connection, encryption and first byte for your site. Permo doesn’t measure a CDN either.

Upkeep, such as an outdated PHP version or a plugin that’s no longer maintained, appears as “1 upkeep” on its layer. It never turns a layer red, because it isn’t a speed problem.

History, By layer: the values of the WordPress, Cache and Browser layers over time, from the bottom up. The Server layer has its own view, Server. Without an API key, only the values Permo measures itself appear.

Layer names: In the History under By layer and in the notification list, each value carries the name of its layer. Elsewhere, such as in System info, the names appear with Show descriptions. Values that belong to no single layer are marked Context, such as the number of posts, or Across layers, such as the list of changes.