1

在以下示例中,正确缓存了什么?是否有一个 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")
4

1 回答 1

4

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

对于 httplib2 文件中的章节__init__.py,如果您想证明,请查看第 1000 行左右对缓存的调用:

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

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

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

于 2009-04-04T21:14:14.997 回答