One simple technique is to cache the pages (or parts of the pages): as you're assembling the page the first time write it to a file or some other storage then send it out. On subsequent fetches of the same page, check to see how old the cached version is and if it's significantly old enough (fudge, fudge) rebuild it otherwise just chuck out the text in the cache.
Now, I know SFA about web caching, but wouldn't it make
more sense to check the various components' last-modified
times, and rebuild the page if any of them has changed
(ala make). You'd only have to worry about "how long has
it been since this page was fetched" if it's part of your
cache replacement strategy.
I was going to add something about this working best
with a mostly static site, but I don't see how this would
be worse than a timeout-based cache even for a fairly
dynamic site. (Corrections are most welcome.)
--
:wq