Mechanics

Speed by caching

Pages render from the files when they are asked for, and the result is kept until a file beneath it changes. Fast, without a second copy of the truth.

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.

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.