Hallo,
ich habe da ein Problem mit einem meiner Projekte (PHP, MySQL, Prototype, Memchache).
Folgendes:
Ab und an verändere/entferne ich DOM Elemente mittels eines AJAX Requests. Das klappt soweit auch. Wechsel ich nach dieser Aktion die Seite, und gehe dann sofort wieder zurück (mittels dem Browser Zurück Buttons), sind die Elemente wieder da bzw. wieder im Originalzustand. Erst ein Seitenrefresh fixed das. Lasse ich mir bei den Seitenwechseln ein paar mehr Sekunden Zeit, bzw. nutze den NOSCRIPT Ersatz, gibt es keinerlei Darstellungsprobleme.
Also vermute ich mal, dass mir da der Browsercache einen Streich spielt.
Nun meine Frage, wie kann ich das fixen? Ich habe ja die Bewegungsgeschwindigkeit des Anwenders ja nicht unter Kontrolle, bzw kann ihn zwingen etwas an seiner Browserkonfig zu machen.
Als Meta Tags habe ich folgendes gesetzt:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate, post-check=0, pre-check=0" />
<meta http-equiv="Expires" content="<?= gmdate('D, d M Y H:i:s') ?> GMT" />
<meta http-equiv="Last-Modified" content="<?= gmdate('D, d M Y H:i:s') ?> GMT" />
entsprechende Headers im PHP Skript:
header('Content-type: text/html; charset=UTF-8');
header('Vary: Accept-Encoding');
header('Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0');
if(strpos(getenv('HTTP_ACCEPT_ENCODING'), 'gzip') === true)
header('Content-Encoding: gzip');
else
header('Pragma: No-cache');
header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
und noch die Headers im jeweiligen Request:
['Cache-Control','no-cache, must-revalidate, post-check=0, pre-check=0','Pragma','no-cache','Expires','Wed, 01 Jan 1975 00:00:00 GMT','Last-Modified','Wed, 01 Jan 1975 00:00:00 GMT']
Die Funktion gmdate gibt auch wirklich die korrekte Zeit wieder, geht weder vor noch nach.
Also was übersehe ich? Woran kann es denn liegen?
Gruß
medi