`requests` needs proper caching supports, it'd be better to contribute to that module instead of the transporter's implementation. I personally think that a HEAD request's overhead is acceptable, but persisting etags on the client library level is still messy.