Whatever time frame you define as content being “stale” is a good choice, and of course the longer that period is, the less database and disk i/o you will have. Of course, if you want caches to stick closely to these defined intervals, you’ll want to make sure you have “Clear all caches when new entries are posted?” disabled in your global weblog preferences. This setting makes ExpressionEngine clear all of its caches when you publish an entry, forcing new cache files to be written system-wide. This strikes the right balance for most users of having some form of caching, but still have content published immediately available on the site. It sounds, though, that you are more concerned with caching than having a 100% dynamic site, and if that’s the case, longer cache times with that setting disabled would be the way to go.