CacheControl is a port of the caching algorithms in httplib2 for use with requests session object.
It was written because httplib2's better support for caching is often mitigated by its lack of thread safety. The same is true of requests in terms of caching.
import requests
from cachecontrol import CacheControl
sess = requests.session()
cached_sess = CacheControl(sess)
response = cached_sess.get('https://google.com')
If the URL contains any caching based headers, it will cache the result in a simple dictionary.
For more info, check out the docs