How big it can get

It is a fair thing to ask before you hand twenty years of writing to a tool: at what point does it stop being pleasant to use? Measured here in August, on an archive of 6,639 posts, the honest answer was a shrug: adding one post cost the whole archive — forty-eight seconds from pressing enter to the site being live — because every page that so much as mentioned a post had to be remade, whether it had changed or not.

That's no longer the honest answer. Since 1.6, the build keeps a record of what went into each page, and remakes only the ones whose record no longer matches. The archive underneath is the same one this was measured on in August, seven posts heavier: 6,646 now, and the engine three releases on, at 1.9.

What you wait for today

Publishing a post dated today, on that same archive: sixteen seconds of build, two of upload — where it was forty-eight. The build isn't touching pages that didn't need it any more, so the size of the archive stopped being what the wait was made of.

Where the size still shows up

It hasn't disappeared. It moved. The record a build keeps depends on more than the posts — it hangs off a fingerprint of the engine itself: the templates, the code, the locales, the config. Change any of that, the way an engine upgrade routinely does, and the whole record is discarded at once. The next build after that is exactly the build this archive always had: every page, remade, because there's no way to know which ones the change actually touched without checking all of them.

Just now, on this same archive — 6,646 posts, 15,777 files — clearing that record and asking for a full rebuild took a minute and a quarter, start to a freshly deployed site. That's not a regression. It's the cost the archive has always had for the one operation that still has to look at everything; an ordinary day of writing just doesn't cause that operation any more. The rate underneath has barely moved either: divide that by the file count and it lands at about four and a half milliseconds a file, where August measured a little over four — the six per cent that 1.9 added to every cold build, because each page now asks which language it speaks, and nothing beyond it.

The practical consequence, updated

The advice from August still holds, and the gap it closes got bigger, not smaller. Bring an old archive in by importing it, not by writing it in post by post. The Mastodon import wrote 2,088 posts and rebuilt once, at the end — about the same minute and a quarter as above. One post at a time, even at today's flat sixteen-and-two per post, the same 2,088 posts would still cost something like ten hours of publishing for work a single import finishes before the kettle boils.

The limit was never the archive. It was rebuilding parts of it that already knew they hadn't changed.

The sixteen-and-two figure carries over from the measurement published alongside 1.6. The rebuild-from-a-cleared-cache figure is fresh — two timed runs against this archive on 1.9, seventy-five and seventy-one seconds, so treat "a minute and a quarter" as a first read rather than a settled number.

Comments