No build step
A page is produced when it is requested, from the files as they are at that moment: the entity is read, its references resolved, the template applied. Static-site generators rebuild everything on every change; compiled systems bake a graph on publish. Both buy fast reads with a second copy of the truth — one that can be stale, half-built or out of step.
One copy, a cache on top
Loam keeps one copy, and caches what it derives from it. A rendered page is kept and served again until something beneath it changes; a publish clears it at once. A cache is disposable and never consulted for truth: throw it away and the first request builds it again, the same.
Freshness is a look, not a search
A change marks its folder and every folder above it. Whether a cache is still good is one glance at a timestamp — never a walk through the site. Even a file changed outside the usual way is noticed within seconds.
Small things that stay fast
- Indexes in memory. The site's indexes are stored as compiled code that PHP keeps in shared memory, so loading one costs next to nothing.
- Assets for a year. Every image, stylesheet and script carries its own version string. Browsers and CDNs keep them for a year; change the file and only that file is fetched again.
- Publishing is a move. Going live moves a file from the draft layer to the live one, in the time it takes to rename. The next request renders the new state.
No cascade
A compiled system must recompute everything that embeds a changed entity — work that grows with the site and fails when interrupted. In loam a person's name changes in one file, and every page that mentions them shows it on the next request. Nothing to recompute, nothing to interrupt.