Zur Navigation

Proxy-Problem

1 Markus

Hallo Jörg,
habe mich gerade von der Arbeit aus in Deinem Forum angemeldet. Dabei ist mir folgendes Aufgefallen:

Unser Proxy cached Deine Seiten. D.h. nachdem ich mich angemeldet habe, sehe ich nach wie vor alle Seiten wie vor der Anmeldung. Erst ein Refresh lößt das Problem.

Das gleiche Problem hatte ich auch bei meinem Projekt. Gelöst habe ich dieses durch folgenden PHP-Code vor der Ausgabe:



   header("Expires: Sat, 01 Jan 2000 01:00:00 GMT");
   header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); 
   header("Cache-Control: no-store, no-cache, must-revalidate");
   header("Cache-Control: post-check=0, pre-check=0", false);
   header("Pragma: no-cache");

Dadurch entsteht auf Dauer wahrscheinlich mehr Traffic, aber die Seiten sind immer aktuell.

Gruß Markus

14.12.2004 12:47

2 Jörg Kruse

Hallo Markus,

das Problem hatte ich auch schon mit Opera, deswegen wollte ich für Browser und dann auch gleich für Proxies folgende zwei Meta Tags noch einbauen (war ich bislang noch nicth zu gekommen):

<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="pragma" content="no-cache" />

habe ich jetzt mal probehalber auf der Seite Die Themen mit den neuesten Beiträgen gemacht; mit Opera besteht das Problem jetzt nicht mehr, wie ist das mit deinem Proxy?

der Metatag für den Proxy entspricht ja der letzten header Angabe aus deinem PHP Code, ich dachte das müsste ausreichen; sind die anderen vier Angaben für Proxies, die die letzte Zeile ignorieren, oder gibt es da verschiedene Standards?

14.12.2004 13:27 | geändert: 14.12.2004 13:36

3 Markus

Hallo Jörg,
geht nicht - unser Proxy interessiert sich nicht für den Inhalt einer HTML-Seite, sondern nur für den HTTP-Header.

Dabei gibt es verschiedene HTTP-Protokolle (1.0 und 1.1)
Jeder benötigt seine eigene cache-control-/Pragma Anweisung.
Die ersten beiden Einträge sind für Proxies und Browser gedacht um zu erkennen, wann ein Seite veraltet ist und neu vom Webserver angefordert werden muß.

Dies kannst Du auch in Deinen Logfiles erkennen. Wenn dort als Code 302 bei einer Datei steht, so wurde nur nachgefragt ob es eine neuere Datei gibt.

14.12.2004 13:47

4 Jörg Kruse

OK, dann ist das Metatag wohl unbrauchbar :| und ich werde ich das über den Header machen.

Eine Last-Modified: Angabe mit Timestamp der letzten Änderung würde auch noch Sinn machen bei den Thread-Seiten: ältere Threads die sich nicht mehr ändern, werden von den Suchmaschinen-Bots dann nicht mehr gezogen. Ist dann aber eine 304, die dann zurückgegeben wird?

Erstmal danke fürs Testen und für den Code :), hab ich wieder was dazu gelernt und was zu tun ;)

14.12.2004 14:12 | geändert: 14.12.2004 14:21

5 Markus

Stimmt, ist 304. Hab auf die schnelle nicht nachgeschaut und war prompt falsch :-(

302 ist ein "Moved Temporarily"

14.12.2004 14:21

6 Jörg Kruse

So, jetzt müssten die obigen Header Angaben überall übermittelt werden, abgesehen von den statischen Seiten wie Impressum, aber da werden sie ja auch nicht benötigt

14.12.2004 14:37

7 Markus

Perfekt !!

14.12.2004 15:00 | geändert: 14.12.2004 15:01

8 Markus (Gast)

Neues Problem,
habe mich zum Testen nochmal abgemeldet.

Jetzt kann ich micht nicht mehr anmelden :-(
Fehlermeldung: Dein Browser lässt keine Cookies zu, dies ist zum Einloggen aber notwendig.

Einstellungen hab ich keine geändert.

14.12.2004 15:04

9 Jörg Kruse

Hmm, die Fehlermeldung kommt, wenn der Test-Cookie nicht gesetzt wurde. Vielleicht ist noch die alte Login-Seite im Proxy gecached, dann sollte es reichen, wenn du die Login-Seite vorm Einloggen manuell nochmal aktualisierst

14.12.2004 15:16 | geändert: 14.12.2004 15:17

10 Markus

So, geht wieder. Mußte die Seite tatsächlich manuell aktualisieren. Der Zusammenhang Cookie/Proxy ist mir zwar nicht ganz klar, aber OK.

Gruß
Markus

14.12.2004 15:26