Кэширует ли библиотека Python httplib2 URI со строками GET? - PullRequest
1 голос
/ 04 апреля 2009

В следующем примере, что кешируется правильно? Есть ли 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 Ответ

4 голосов
/ 05 апреля 2009

httplib2 использует полный URI для ключа кэша, поэтому в этом случае каждый из ваших URL-адресов в вашем примере будет кэшироваться клиентом отдельно.

Для главы и стиха из файла __init__.py для httplib2, если вам нужны доказательства, посмотрите на вызов кеша в строке 1000:

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

Значение defrag_uri определяется функцией urlnorm (строка 170ish) и включает схему, полномочия, путь и запрос.

Конечно, как вы знаете, сервер может по-разному интерпретировать определение «ресурса» и, следовательно, может возвращать кэшированное содержимое. Поскольку в данном случае кажется, что вы управляете сервером, у вас там полный контроль, поэтому никаких проблем. В любом случае, на стороне клиента не будет кэшированных значений клиента, используемых для первого вызова каждого из 3 URL-адресов в ваших примерах.

...