Python库httplib2是否使用GET字符串缓存URI?

时间:2009-04-04 19:50:11

标签: python caching httplib2

在以下示例中,正确缓存了什么?是否有一个Vary-Header我必须为GET字符串设置服务器端?

import httplib2
h = httplib2.Http(".cache")
resp, content = h.request("http://test.com/list/")
resp, content = h.request("http://test.com/list?limit=10")
resp, content = h.request("http://test.com/list?limit=50")

1 个答案:

答案 0 :(得分:4)

httplib2使用缓存键的完整URI,因此在这种情况下,您的示例中的每个URL都将由客户端单独缓存。

对于来自httplib2的__init__.py文件的章节和经文,如果您想要校对,请查看第1000行附近的缓存调用:

cachekey = defrag_uri
cached_value = self.cache.get(cachekey)

defrag_uri由函数urlnorm(第170行)定义,包括方案,权限,路径和查询。

当然,正如您所知,服务器可能会以完全不同的方式解释“资源”的定义,因此,仍可能返回缓存的内容。因为在这种情况下听起来你正在控制服务器,所以你可以完全控制,所以没有问题。无论哪种方式,在客户端,没有客户端缓存的值用于第一次调用示例中的每个3个URL。