add caching based on user-agent hash.