How proxy caching works