www.fabiankeil.de/blog-surrogat/2006/05/05/cache-probleme-mit-privoxy-fehlermeldungen-beseitigt.html
Seit dem Beseitigen der Privoxy-DNS-Probleme treten Privoxy-Fehlermeldungen deutlich seltener auf, aber immer noch öfter als nie.
Wenn der Browser die Fehlermeldungen zwischenspeichert, führt das weiterhin zu den
beschriebenen Nervereien:
der Browser setzt beim nächsten Versuch den If-Modified-Since
-Header, der
Server sendet einen 304
er und der Browser zeigt die veraltete Fehlermeldung
erneut an.
Privoxy setzt zwar Cache-Control
auf
,
die Bedeutung dieses Headers
entspricht jedoch nicht ganz dem Wortlaut:
no-cache
- no-cache
- If the no-cache directive does not specify a field-name, then a cache MUST NOT use the response to satisfy a subsequent request without successful revalidation with the origin server.
Solange der Browser vor der nächsten Benutzung des gespeicherten Dokuments nochmal beim Server anfragt, darf er das Dokument zwischenspeichern.
Zusätzlich datiert Privoxy den Expires
-Header in die Vergangenheit,
für Expires
-Header, deren Wert vor dem des
Date
-Headers liegt, gilt aber das gleiche wie für
Cache-Control: no-cache
:
Many HTTP/1.0 cache implementations will treat an Expires value that is less than or equal to the response Date value as being equivalent to the Cache-Control response directive "no-cache".
Ich habe keine Stelle gefunden, die dieses Verhalten für HTTP/1.1 verbieten würde.
Auch wenn sich das Zwischenspeichern der Fehlermeldungen nicht verhindern lässt, kann man es immer noch
unwirksam machen und den Last-Modified
-Header auf ein Datum setzen, das vor dem Änderungsdatum
eines jeden Dokuments im Web liegt. Zum Beispiel auf den Geburtstag von Tim Berners-Lee.
Nutzt der Browser das Datum später für den If-Modified-Since
-Header,
wird er sicher keinen 304
bekommen. Der Header muss den Server nicht mal erreichen,
er kann vorher von Privoxy entfernt werden.
Der Privoxy-Sammelpatch setzt die Idee um, weitere Auswirkungen des Patches sind zusammen mit Hinweisen zur Installation auf der Seite Minor Privoxy improvements aufgeführt.
Um die Fehlermeldung zu provozieren wurde Tor beendet, Privoxy verlor die Verbindung zum Netz und konnte die von Firefox angeforderte Seite nicht liefern. Aus der Sicht von Firefox:
http://blog.fefe.de/ GET / HTTP/1.1 Host: blog.fefe.de User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.2) Gecko/20060414 Firefox/1.5.0.2 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en,de-ch;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 600 Proxy-Connection: keep-alive Pragma: no-cache Cache-Control: no-cache HTTP/1.x 503 Connect failed Content-Length: 4086 Content-Type: text/html Cache-Control: no-cache Date: Fri, 05 May 2006 13:44:16 GMT Last-Modified: Wed, 08 Jun 1955 12:00:00 GMT Expires: Sat, 17 Jun 2000 12:00:00 GMT
Aus der Sicht von Privoxy:
May 05 15:44:16 Privoxy(08085000) Connect: OK May 05 15:44:16 Privoxy(08085000) Connect: accept connection ... May 05 15:44:16 Privoxy(0810d800) Header: New HTTP Request-Line: GET / HTTP/1.1 May 05 15:44:16 Privoxy(0810d800) Header: scan: GET / HTTP/1.1 May 05 15:44:16 Privoxy(0810d800) Header: scan: Host: blog.fefe.de May 05 15:44:16 Privoxy(0810d800) Header: scan: User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.2) Gecko/20060414 Firefox/1.5.0.2 May 05 15:44:16 Privoxy(0810d800) Header: scan: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 May 05 15:44:16 Privoxy(0810d800) Header: scan: Accept-Language: en,de-ch;q=0.5 May 05 15:44:16 Privoxy(0810d800) Header: scan: Accept-Encoding: gzip,deflate May 05 15:44:16 Privoxy(0810d800) Header: scan: Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 May 05 15:44:16 Privoxy(0810d800) Header: scan: Keep-Alive: 600 May 05 15:44:16 Privoxy(0810d800) Header: scan: Proxy-Connection: keep-alive May 05 15:44:16 Privoxy(0810d800) Header: scan: Pragma: no-cache May 05 15:44:16 Privoxy(0810d800) Header: scan: Cache-Control: no-cache May 05 15:44:16 Privoxy(0810d800) Header: Modified: User-Agent: Mozilla/5.0 (X11; U; FreeBSD sparc64; en-AU; rv:1.8.0.2) Gecko/20060428 Firefox/1.5.0.2 May 05 15:44:16 Privoxy(0810d800) Header: Suppressed offer to compress content May 05 15:44:16 Privoxy(0810d800) Header: crumble crunched: Keep-Alive: 600! May 05 15:44:16 Privoxy(0810d800) Header: crumble crunched: Proxy-Connection: keep-alive! May 05 15:44:16 Privoxy(0810d800) Header: Accept-Language header crunched and replaced with: Accept-Language: en-au May 05 15:44:16 Privoxy(0810d800) Header: addh-unique: Host: blog.fefe.de May 05 15:44:16 Privoxy(0810d800) Request: blog.fefe.de/ May 05 15:44:16 Privoxy(0810d800) Connect: to blog.fefe.de May 05 15:44:16 Privoxy(0810d800) Connect: SOCKS4 negotiation write failed... May 05 15:44:16 Privoxy(0810d800) Connect: connect to: blog.fefe.de failed: Broken pipe
Tor wurde wieder gestartet und die die Seite erneut aufgerufen. Firefox setzte
den If-Modified-Since
-Header:
http://blog.fefe.de/ GET / HTTP/1.1 Host: blog.fefe.de User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.2) Gecko/20060414 Firefox/1.5.0.2 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en,de-ch;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 600 Proxy-Connection: keep-alive If-Modified-Since: Wed, 08 Jun 1955 12:00:00 GMT Cache-Control: max-age=0 HTTP/1.x 200 Here you go Server: Gatling/0.9 Content-Type: text/html; charset=utf-8 Content-Length: 16741 Last-Modified: Fri, 05 May 2006 05:38:44 GMT Connection: close
Gatling musste ihn aber nicht überprüfen, da er vorher von Privoxy gefiltert wurde:
May 05 15:44:27 Privoxy(08085000) Connect: OK May 05 15:44:27 Privoxy(08085000) Connect: accept connection ... May 05 15:44:27 Privoxy(0810d200) Header: New HTTP Request-Line: GET / HTTP/1.1 May 05 15:44:27 Privoxy(0810d200) Header: scan: GET / HTTP/1.1 May 05 15:44:27 Privoxy(0810d200) Header: scan: Host: blog.fefe.de May 05 15:44:27 Privoxy(0810d200) Header: scan: User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.2) Gecko/20060414 Firefox/1.5.0.2 May 05 15:44:27 Privoxy(0810d200) Header: scan: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 May 05 15:44:27 Privoxy(0810d200) Header: scan: Accept-Language: en,de-ch;q=0.5 May 05 15:44:27 Privoxy(0810d200) Header: scan: Accept-Encoding: gzip,deflate May 05 15:44:27 Privoxy(0810d200) Header: scan: Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 May 05 15:44:27 Privoxy(0810d200) Header: scan: Keep-Alive: 600 May 05 15:44:27 Privoxy(0810d200) Header: scan: Proxy-Connection: keep-alive May 05 15:44:27 Privoxy(0810d200) Header: scan: If-Modified-Since: Wed, 08 Jun 1955 12:00:00 GMT May 05 15:44:27 Privoxy(0810d200) Header: scan: Cache-Control: max-age=0 May 05 15:44:27 Privoxy(0810d200) Header: Modified: User-Agent: Mozilla/5.0 (X11; U; FreeBSD sparc64; en-AU; rv:1.8.0.2) Gecko/20060428 Firefox/1.5.0.2 May 05 15:44:27 Privoxy(0810d200) Header: Suppressed offer to compress content May 05 15:44:27 Privoxy(0810d200) Header: Crunching useless If-Modified-Since header. May 05 15:44:27 Privoxy(0810d200) Header: crumble crunched: Keep-Alive: 600! May 05 15:44:27 Privoxy(0810d200) Header: crumble crunched: Proxy-Connection: keep-alive! May 05 15:44:27 Privoxy(0810d200) Header: Accept-Language header crunched and replaced with: Accept-Language: en-au May 05 15:44:27 Privoxy(0810d200) Header: addh-unique: Host: blog.fefe.de May 05 15:44:27 Privoxy(0810d200) Request: blog.fefe.de/ May 05 15:44:27 Privoxy(0810d200) Connect: to blog.fefe.de May 05 15:44:37 Privoxy(0810d200) Connect: OK May 05 15:44:38 Privoxy(0810d200) Header: scan: HTTP/1.0 200 Here you go May 05 15:44:38 Privoxy(0810d200) Header: scan: Server: Gatling/0.9 May 05 15:44:38 Privoxy(0810d200) Header: scan: Content-Type: text/html; charset=utf-8 May 05 15:44:38 Privoxy(0810d200) Header: scan: Content-Length: 16741 May 05 15:44:38 Privoxy(0810d200) Header: scan: Last-Modified: Fri, 05 May 2006 05:38:44 GMT May 05 15:44:41 Privoxy(0810d200) Header: scan: HTTP/1.0 200 Here you go May 05 15:44:41 Privoxy(0810d200) Header: scan: Server: Gatling/0.9 May 05 15:44:41 Privoxy(0810d200) Header: scan: Content-Type: text/html; charset=utf-8 May 05 15:44:41 Privoxy(0810d200) Header: scan: Content-Length: 16741 May 05 15:44:41 Privoxy(0810d200) Header: scan: Last-Modified: Fri, 05 May 2006 05:38:44 GMT May 05 15:44:41 Privoxy(0810d200) Header: scan: Connection: close May 05 15:44:41 Privoxy(0810d200) Header: crumble crunched: Connection: close! May 05 15:44:41 Privoxy(0810d200) Header: Adjust Content-Length to 16741