Compression: what to compress and what not to
Text compresses by two thirds. Images do not compress at all, and compressing them wastes CPU on every request.
4 min read
Cache headers that are safe to set
A long cache on a file whose name never changes is a file you cannot update. Version the name, then cache it forever.
5 min read
HTTP/2 and HTTP/3 - what actually changes
Many small files stop being a problem, which makes some old advice actively wrong.
4 min read
Images that are heavier than the whole page
Usually most of the bytes and the easiest thing to halve. Three changes, in the order of what they save.
5 min read
The page that runs four hundred queries
Each one is fast. Together they are the page. How to see the count, and the one change that collapses it.
5 min read
opcache: what it caches and what it does not
The single largest PHP speed-up, what it will not fix, and the setting that makes a deploy look like it did not happen.
4 min read
Sizing a PHP-FPM pool
max_children copied from a tutorial is the most common cause of a server that swaps. Work it out from your own numbers instead.
5 min read
Reading a network waterfall
The shape of the chart names the problem before you read a single row. Four shapes and what each one means.
5 min read
Object caching with Redis
It removes repeated database work, not slow queries. When it helps a great deal, when it helps nothing, and the setting that makes it dangerous.
5 min read
The site is slow - where to look first
Measure before you change anything. One number tells you whether the problem is the server, the network or your own code.
6 min read
TTFB: the one number worth measuring first
It splits every slow-page problem in half before you change anything, and it is one command.
4 min read