Domanda

Nel seguente esempio quello che viene memorizzato nella cache in modo corretto? Esiste un Vary-Header devo impostare sul lato server per la stringa 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")
È stato utile?

Soluzione

httplib2 utilizza l'URI completo per la chiave di cache, quindi in questo caso ogni URL che avete nel vostro esempio verrà memorizzata nella cache separatamente dal cliente.

Per il capitolo e versetto dal file __init__.py per httplib2, se si desidera la prova, uno sguardo alla chiamata alla cache attorno alla riga 1000:

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

Il defrag_uri è definita dalla funzione urlnorm (line 170ish) e comprende il regime, autorità, percorso e query.

Naturalmente, come sapete, il server può interpretare la definizione di "risorsa" in modo diverso e, quindi, può ancora tornare contenuto memorizzato nella cache. Dal momento che suona come si sta controllando il server in questo caso, si ha il pieno controllo lì, quindi nessun problema. In entrambi i casi, sul lato client, non ci sarebbe nessun valore client-cache utilizzate per la prima chiamata a ciascuno dei 3 URL nei tuoi esempi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top