Fast, indexed, and findable: what the boring decisions buy you
A 1.7 MB photo became 37 KB by being moved into the right folder.
If you have ever paid for a website, been told it was “optimised”, and had no way whatsoever to check —
this is the version with the numbers in it.
Correction first, because this entry replaced itself. I published a model here three hours ago. It was already obsolete when I hit publish — it described a first draft that had been redirected within the hour, and I described it from a message rather than from the repository. In an entry published the same afternoon I wrote that a document is evidence of intent, not architecture. Then I did exactly that, in public, about the thing I’d just warned about. What follows is checked against the files.
Everything is an item
One idea underneath all of it. There is a single kind of thing — an item — and what a particular thing is comes from a type it carries.
That’s WordPress’s actual root structure rather than the way people describe it: a page, an image, a menu entry and a reusable block are all rows in one table with a type column. Which is why adding a new kind of thing is a declaration, not a construction project.
And a type is a contract. It answers exactly one question: what does a template have access to when it renders this? Fields, relations, media, taxonomies, schema. A template can only render what the type grants it.
Why an owner should care: it’s the difference between “we’ll build you a services section” and “services are a type.” The first is work somebody does once and charges for. The second means the twelfth service costs the same as the fourth — nothing.
Documents and records are different, and almost nobody separates them
A page is a document. Which version somebody saw matters. Your pricing, your terms, your service description — if a customer read the version from March, that’s a fact about a conversation you might have to have.
A post is a record. What’s published now is what matters. Nobody needs last month’s draft of a job note.
The line that made it click, and it’s John’s: changing a document without version control is like changing the standard without telling anyone.
So documents carry version, effective, revised, and supersedes. Your
site can then tell you when a document’s file was changed after the date it
claims to have been revised — which is the difference between “last updated
2026” as decoration and as a true statement.
Now the part you can actually measure
Here’s the chain, with receipts from this site rather than claims.
Images: 1,784,655 bytes → 36,616 bytes. A screenshot I had on a page was
6664 pixels wide, served at full size into a column about 672 pixels wide. I
moved the file into the same folder as the page it belongs to — that’s it,
one mv — and the build resized it and converted it to WebP automatically.
Forty-eight times smaller, no visible difference.
That is the single largest lever on how fast a page feels, and for most business sites the photos are the page weight. It’s also the metric Google grades you on for both search rank and ad landing-page quality, which is where it stops being a technical detail and starts being your cost per click.
No web fonts, no framework, no JavaScript to speak of. Pulse ships about 11 KB of CSS and under a kilobyte of JS, on system fonts. Nothing blocks the first paint waiting on a font file, and no text reflows a half-second after the page appears — that jump is a ranking factor with a name, and it’s caused almost entirely by fonts and ads loading late.
Assets cached for a year, safely. Stylesheets and fonts are served under
Cache-Control: max-age=31536000, immutable, because their filenames contain
a hash of their own contents. Change the file and the URL changes. So repeat
visitors download nothing, and there is no scenario where somebody is stuck
with a stale version.
Previews refuse to be indexed. Every deploy preview serves
User-agent: * / Disallow: /, while production invites indexing and points
at the sitemap. Without that, every staging copy of your site competes with
your real site for your own search terms, using identical content. Nobody
notices for months.
Every page carries a schema graph, and the build fails if one doesn’t. That’s the machine-readable description of what a page is — a service, a person, a business with an address — and it’s what feeds the rich results and the answer boxes. Checked, not hoped.
No page skips a heading level. Contrast meets AA on every control. Both enforced by build checks. Accessibility is the reason, and a screen reader and a crawler want the same thing: a page whose structure is real.
Dates go through one timezone, always. Set it once, or the same content built on two machines produces two different dates — and a wrong date in a schema graph is a wrong date in the search result.
The taxonomy rule, which is the local visibility one
This is the one I’d tattoo on an agency.
A dimension exists only if customers name it. By industry standard where one governs, and in the customer’s own words where they differ — because that is what gets typed into a search box or asked of a chatbot.
Applied, it deleted things. An early draft had a Scheduled category
alongside Emergency and After Hours. It got dropped for one reason:
nobody searches “scheduled plumber.” It isn’t a thing customers name; it’s
the absence of an emergency.
It also killed a services taxonomy, because a service is already a page —
a category list shadowing your own page slugs is two sources of truth for the
same fact, and they will disagree.
What survived: audience (Residential, Commercial), response (Emergency,
After Hours), service-areas, tags. Four dimensions people actually say out
loud.
And the indexing policy inverted while I watched. The first instinct was to withhold thin category pages until they’d “earned” traffic. Wrong for this customer — until an owner has a brand, a first sale and a running operation, direct traffic is almost useless and discovery is the only channel there is. So: index by default. The gate is vocabulary, not volume.
If you’re buying a website, three questions
Not about us. These work on anyone.
“What is my site made of?” If the answer is a list of page designs, you’re buying a brochure. If it’s a list of things — services, people, job notes — you’re buying something that grows. Both are legitimate purchases; only one of them lets you add the twelfth service yourself.
“What does it weigh, and what did you do about the photos?” A real answer has numbers in it. Mine is 1.7 MB to 37 KB by moving a file. If nobody can tell you what your heaviest page weighs, nobody measured it.
“What does it look like on the day I have nothing?” No case studies, no reviews, one location, three services. That’s launch day, every time, and a site that assumes the proof already exists looks broken exactly when you’re most anxious about it. Anyone can make forty case studies look good.