Tut urllib2.urlopen () - cache-Sachen?
Sie nicht erwähnt, dass diese in der python-Dokumentation. Und seit kurzem Teste ich eine website einfach erfrischend die Website mit urllib2.urlopen() zum extrahieren bestimmter Inhalte, merke ich manchmal, wenn ich ein update der Website urllib2.urlopen() scheint nicht die neu hinzugefügten Inhalte. Ich Frage mich also, es tut cache Zeug irgendwo, richtig?
- Web-Server-cache-Sachen auch. Das ist der übliche Schuldige. Prüfen Sie die Kopfzeilen auf das Ergebnis, und update Ihre Frage zum zählen der
info()
. - Server-cache-Sachen auch" heißt es, wenn ich nicht bekomme, die aktuellen Ergebnisse mit urllib2.urlopen (), die vor allem web-Server "wissen", es ist mir erfrischend, und geben Sie nicht mir die aktualisierte Sachen? Gibt es eine Möglichkeit zu zwingen, die der server zum übertragen der Daten alle immer wieder, jedes mal, wenn ich aktualisieren Sie die Seite?
- Es sei denn, Sie kennen einen viel über den web-server, die Sie nicht wirklich wissen, was zwischengespeichert hat. Es könnte mehrere Ebenen der Zwischenspeicherung. Es könnte falsch konfiguriert cache. Könnte es haben Seiten, die nicht Informationen zu aktualisieren, cache. Viel schief gehen kann auf der server-Seite.
- Vielen Dank. So urllib2.urlopen() selbst nicht cache-Sachen auf meinem PC-Seite, richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht.
Wenn Sie nicht sehen, die neuen Daten, könnte dies mehrere Gründe haben. Die meisten größeren web-services verwenden server-side-caching zur performance-Gründen, zum Beispiel unter Verwendung von caching-proxies wie Varnish und Squid-oder application-level-caching.
Wenn das problem verursacht, indem Sie server-side caching, normalerweise gibt es keine Möglichkeit zu zwingen, die server, um Ihnen die neuesten Daten.
Für caching-proxies wie squid, liegen die Dinge anders. In der Regel, Tintenfisch fügt einige zusätzliche Header in die HTTP-response (
response().info().headers
).Wenn Sie sehen, ein header-Feld namens
X-Cache
oderX-Cache-Lookup
bedeutet dies, dass Sie nicht mit dem remote-server direkt, sondern über einen transparenten proxy.Wenn Sie so etwas wie:
X-Cache: HIT from proxy.domain.tld
bedeutet dies, dass die Antwort, die Sie bekam zwischengespeichert. Das Gegenteil istX-Cache MISS from proxy.domain.tld
, was bedeutet, dass die Antwort ist frisch.Sehr alte Frage, aber ich hatte ein ähnliches problem, das diese Lösung nicht beheben.
In meinem Fall hatte ich zum fälschen des User-Agent so:
Hoffe, dies hilft jemand...
Ihrem web-server oder einen HTTP-proxy kann die Zwischenspeicherung von Inhalten. Sie können versuchen, um das caching zu deaktivieren, indem ein
Pragma: no-cache
- request-header:Wenn Sie änderungen vor und testen das Verhalten von browser und von das urllib, es ist leicht zu machen, einen dummen Fehler.
Im browser sind Sie angemeldet, aber in das urllib.urlopen Ihre app umleiten Sie immer auf die gleiche login-Seite, so dass, wenn Sie sehen nur die Größe der Seite oder oben in Ihr gemeinsames layout, könnte man denken, die haben Ihre änderungen keine Auswirkungen.
Ich finde es schwer zu glauben, dass urllib2 nicht Zwischenspeichern, da in meinem Fall, nach Neustart des Programms die Daten aktualisiert werden. Wenn das Programm nicht neu gestartet wird, erscheint die Daten zwischengespeichert werden, für immer. Auch das abrufen der gleichen Daten von Firefox nie wieder veraltete Daten.