使用 CacheControl#

CacheControl 假设您正在对请求使用 requests.Session。如果您正在使用 requests.get 进行临时请求,那么您可能不会特别关心缓存。

有两种方法可以使用 CacheControl,即通过包装器和适配器。

包装器#

使用 CacheControl 最简单的方法是利用基本包装器。这是一个示例

import requests
import cachecontrol

sess = cachecontrol.CacheControl(requests.Session())
resp = sess.get('http://google.com')

这使用默认缓存存储,一个线程安全的内存中字典。

适配器#

使用 CacheControl 的另一种方法是通过请求 传输适配器

以下是适配器的工作方式

import requests
import cachecontrol

sess = requests.Session()
sess.mount('http://', cachecontrol.CacheControlAdapter())

resp = sess.get('http://google.com')

在幕后,上面提到的使用 CacheControl 的包装器方法与此示例相同。

使用不同的缓存存储#

包装器和适配器类都允许提供一个自定义缓存存储对象来存储您的缓存数据。这是一个使用 CacheControl 中提供的 FileCache 的示例

import requests

from cachecontrol import CacheControl

# NOTE: This requires filelock be installed
from cachecontrol.caches import FileCache

sess = CacheControl(requests.Session(),
                    cache=FileCache('.webcache'))

FileCache 将创建一个名为 .webcache 的目录,并为每个缓存请求存储一个文件。