read from cache when possible