Question

Dans l'exemple suivant ce qui est mis en cache correctement? Y at-il un en-tête Variez je dois mettre de côté serveur pour la chaîne 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")
Était-ce utile?

La solution

httplib2 utilise l'URI complet pour la clé de cache, dans ce cas chacune des URL que vous avez dans votre exemple seront mises en cache séparément par le client.

Pour le chapitre et le verset du fichier __init__.py pour httplib2, si vous voulez la preuve, un coup d'oeil à l'appel au cache autour de la ligne 1000:

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

Le defrag_uri est défini par la fonction urlnorm (line 170ish) et comprend le régime, l'autorité, le chemin et la requête.

Bien sûr, comme vous le savez, le serveur peut interpréter la définition de « ressource » tout à fait différemment et, donc, peut encore revenir contenu mis en cache. Comme il semble que vous contrôlez le serveur dans ce cas là, vous avez le contrôle total, donc pas de problème. De toute façon, sur le côté client, il n'y aurait pas de valeurs en cache-client utilisé pour le premier appel à chacun des 3 URL dans vos exemples.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top