Another caching option is to have the transporter make the request with the etag. If the server responds with 302, return the cached doc. This would be useful since the Discovery docs don't usually change to often. The Python client does this type of caching.