cache on a per-client basis