What Are You Keeping Alive?
An agency builds a company a website. Four pages: home, about, services, contact. It will change maybe once a year, when they finish a project worth a case study or add a line to the services. The agency delivers it on WordPress, which means a database, a PHP runtime, a theme, nine plugins, and a hosting bill of twenty or thirty dollars a month, a few hundred a year, every year, for as long as the company exists. The static version of the same four pages, deployed as files, costs nothing. Not “less.” Zero.
Nothing on the site changes per visitor. No comments, no logins, no cart. The visitor at noon and the visitor at 3am get the identical four pages. And yet somewhere a server is online at 3am, holding a database connection, ready to assemble those four pages from scratch the instant someone asks, as if the answer might have changed since the last person asked. It hasn’t. It won’t. But the machine is up, and it is billed, and it is patched, and it is yours now.
Ask the agency why, and the word you get back is dynamic. It’s a dynamic site. Said with a small note of pride, the way you’d say “it’s a real house, not a tent.”
Hold that word. And hold the machine awake at 3am for no one. We’ll come back to both.
What were you actually asking for?
When a company asks for a dynamic website, watch what they’re actually asking for. Almost always it’s one of two things, and they are not the same thing.
One: they want the site to do something different for different people, or at different times. A price that updates. A logged-in account. A feed that’s fresh. Something where the answer genuinely depends on who’s asking and when. That is dynamism. Real, honest, per-request computation.
Two: they want to change the words without calling a developer. A box they can log into and edit the About page themselves. That is not dynamism. That’s authoring. That’s “I don’t want to touch code.”
Which one was the client buying? Watch which feature closes the sale. It is never the price that updates by the second. It is the login, the box where they fix a typo on the About page themselves, on a Sunday, without emailing anyone. And the tool delivers that by sitting the editable box on top of a running database, so the answer to “I don’t want to touch code” arrives welded to a live runtime that has nothing to do with the question. You asked for an editable brochure. You got a clerk.
Did anyone ask which of the two you needed? Or did the word cover for both, so the question never had to be said out loud?
What does the word mean when it stands still?
Pull the word apart. Dynamic comes from the Greek dynamis: force, power, the capacity to do work. Static comes from statikos: causing to stand. Engineers already know these as the two halves of mechanics. Statics is the study of bodies at rest, in equilibrium, holding their own weight. Dynamics is the study of bodies in motion, under forces that have to keep being applied.
So which of those describes your website? A static thing stands on its own. Remove the force and it keeps standing, the way a printed page keeps saying what it says whether or not anyone is in the building. A dynamic thing is in motion, and what happens to motion the moment you stop feeding it? Cut the power, stop the process, miss the patch, and it falls over. It cannot stand by itself. It never could. Is that the property you were reaching for when you asked for something dynamic?
Now look at what we did with the two words. We took the one that means “cannot stay upright without continuous force applied to it” and made it the compliment. We took the one that means “stands on its own, settled” and made it the thing juniors do before they graduate to something real. Same root as stable. Same root as establish. Same root as state.
Which of those did you actually want your company’s front door to be?
Who is retyping the brochure?
Draw the site you paid for as a room. A shop with a brochure in the window. A static site is that brochure: printed once, hung in the glass, read by everyone who passes. It cost something to design and print. After that it just stands there, saying the same true thing to the noon crowd and the 3am passerby with equal patience, at a cost of essentially nothing.
Now the dynamic version of the same shop. No brochure in the window. Instead a clerk, on payroll, and every time someone walks past, the clerk pulls out a blank sheet, walks to the filing cabinet, looks up the shop’s name, the hours, the phone number, the list of services, writes them all out by hand, holds the fresh copy to the glass for exactly one reader, then throws it away and waits to retype it for the next person.
The clerk never sleeps. The clerk is there at 3am, retyping the same brochure for a street with nobody on it, because someone might come, and if they do the sheet should be ready. Ask why the shop is run this way and the answer is that it’s dynamic. The clerk can change the hours the moment they change. Which is true. It happens twice a year. The other three hundred and sixty three days, you are paying a person to copy a document that has not changed a word, one reader at a time, forever.
Would you ever call that clerk the sophisticated choice? Or would you ask, fairly quickly, why the thing isn’t just printed?
But we cache it, don’t we?
Here is where someone stops me. Nobody serves it that slowly, they say. We put a cache in front. The page gets built once and stored, and after that visitors get the stored copy. Fast as a file. Practically static.
So listen to what that sentence just conceded. You added the cache because the page is the same every time. Is that not the entire claim of static generation, admitted out loud as a performance tweak? But instead of printing the brochure and sending the clerk home, you printed the brochure, taped it to the window, and kept the clerk standing right there, on payroll, watching the tape, ready to tear it down and retype the moment anything changes. The clerk is still there. The database is still there. The runtime is still there. You added a second machine, a cache, and a new full-time worry called cache invalidation, which is the question of when the taped-up copy is allowed to be wrong. If the copy in the window is already the right answer, what is the clerk still being paid for?
Is caching the same as static generation, then? One patches over the fact that you built something dynamic that never needed to be. The other never built the dynamic thing at all. Caching is honest in exactly one situation: when what you cache is genuinely expensive and genuinely does change, just not on every single request. For a brochure that never changes at all, is the cache a solution, or a confession? The day you installed it, you agreed the answer is always the same. So what did the cache buy you, other than a second thing to keep alive?
And the clerk you kept can be robbed. A printed page in a window has no back door. A running site has nine plugins, which is nine codebases somebody else wrote, and code has holes. The history of WordPress is a history of mass break-ins through exactly these: a file-manager plugin, a slider, a form handler, and more than once the caching plugin itself, the one installed to make the dynamic site act static, each good for hundreds of thousands of sites taken over in a single weekend. The brochure taped to the window cannot be defaced from another country while the street is empty. The machine awake at 3am can. Which of the two is more likely to be broken into at the hour nobody is watching, to serve pages that never changed to begin with?
When is the clerk worth keeping?
Let me argue against myself, because there is a clerk worth keeping, and pretending otherwise is how static turns into its own dumb dogma.
Some answers really do change per visitor. When you log into your bank, the page has to be computed for you, this second, because a printed one would be a catastrophe. When the price moves with demand, when the feed is fresh, when you hit send on a form and something has to receive it and act, that is a real write path, a genuine moment where the answer depends on who is asking and when. There is no honest way to precompute that. The clerk earns the payroll exactly there, at the counter, where a transaction actually happens.
So the question was never “static or dynamic,” as if one of them were the virtuous answer. The question is smaller and much harder to dodge. Does this specific thing change per request? The bank login, yes. The price ticker, yes. The four pages of hours and services, no. Not once, not ever. The honest architecture is the one that can tell those two apart and treats them differently. The dishonest one runs the same hot machine for both and calls the whole thing dynamic. So which parts were ever the counter, and which parts were only ever the brochure?
When did the exception become the rule?
So watch what gets built. A full running server, for all of it. The one form that genuinely needs to receive a request is used to justify keeping the entire site live, hot, patched, and billed, as if the hours page had suddenly developed opinions that change by the second. The one percent that was real becomes the alibi for the ninety-nine percent that was always theater. Since when does one working counter require you to rebuild the whole shop around the clerk, and throw out the brochure that would have served everyone who walked in without buying?
So what would it take to refuse the alibi? Not the code-only austerity that scared everyone off static in the first place. You can serve the ninety-nine percent as what it is, files, computed once, standing on their own, and keep one thin seam of live computation for the single moment that is actually a transaction. Print the brochure. Keep one clerk at the one counter where money changes hands. Send the other one home.
Notice I am not naming a tool. That is deliberate. The moment this becomes “use X instead of Y” it stops being a question about your building and turns into a fight about brands. The tools that made static feel like punishment, and the tools that made dynamic feel like the only grown-up option, were both selling you past the one question that matters. What here changes per request?
Sure it’s them you’re picturing?
We have been picturing the agency. The client who did not know better. The WordPress site with nine plugins that should have been nine files.
Let me turn the lamp around, because I have stood exactly where that clerk was kept on for no reason, and I put him there myself.
Two sites, same week, same framework, same pair of hands. One I froze to files. No server, no adapter, nothing awake at night, nothing to patch, a bill of zero. The other I kept a live runtime alive for, a whole process running so the site could do one thing. When I made myself say what the one thing was, out loud, the answer was a contact form. A single place where a visitor sends a message. One counter, and I had kept the entire shop lit around it, because that was the path of least resistance, and because keeping a server “in case” feels like prudence right up until the invoice and the patch notes arrive.
Was the second site dynamic? By the word, sure. By the meaning, it was a brochure with one working counter and a runtime I was paying to keep awake for the other twenty three hours and fifty nine minutes a day when nobody was sending anything. I had the whole argument sitting in my own two repositories. I still almost kept the clerk on both.
What are you keeping alive?
So go look at whatever you call your dynamic site. Actually look at it, page by page, the way you would walk a shop after closing. For each page, ask the one question the word was built to keep you from asking. Does this change for the visitor at 3am, versus the visitor at noon? Does it change for anyone?
If the answer is no, and for most of what you are paying to keep alive the answer is no, then what is the running server for? Not what could it theoretically do. What is it doing, tonight, right now, while you sleep, other than standing awake to retype a page that has not changed since you launched, waiting to be patched, waiting to be billed, waiting to be the thing that is down, or broken into, at 3am when the one visitor who mattered finally arrives?
You called it dynamic because it sounded like capability. But the word only ever meant it cannot stand up on its own.
So what, exactly, are you keeping alive?