Here's what we do:
- Cache a response from some external service (be it a db or web service, whatever)
- When a user request the resource ALWAYS serve it from cache if it's there
- Then "out of band" (i.e. on a different thread) make a call to get it from the external service and update the cache if you get a valid response.
- But only do this if the cache is stale