contao/test — Issue #600: Browser laden die Website nicht neu
Author: importer
Created: 2011-11-29 06:30:39+00:00
State: open
Labels: Defect, frontend

Hallo,

ich hab auf meiner Seite das Problem, dass bei aktiviertem Cache die Browser immer noch die alte Seite anzeigen, obwohl der Cache schon längst zerfallen sein müsste.

Reproduzieren lässt sich das ganze in der 2.6er und auch in der 2.7 RC1-Online Demo. Und zwar folgendermaßen:

1. In der Demo den Seitencache auf 1 Minute stellen (habs bei dem Startpunkt gemacht)
2. In einem zweiten Tab die Home-Seite der Demo aufrufen
3. Im Seitenlayout die Position des Loginformular verändern
4. Ein paar Minuten warten
5. In dem zweiten Tab irgendeine andere Unterseite aufrufen und anschließend wieder auf Home klicken
->Es wird noch das alte Seitenlayout angezeigt. Erst nach einem F5 verändert sich die Position, so wie sie sollte.

Das ganze lässt sich sowohl mit FireFox, als auch mit dem Internet Explorer reproduzieren.

Die Ursache für das Verhalten liegt in der fehlerhaften Anweisung von TypoLight an dem Browser, denn das sendet folgenden Header:

```
header('Cache-Control: public, max-age=' . $expire);
header('Expires: '.gmdate('D, d M Y H:i:s', $expire).' GMT');
```

Sprich er sendet den Expires-Header korrekt, dass er in 1 Minute den Cache verwerfen soll. Jedoch liefert der Max-Age-Header einen widerspüchlichen Wert. Max-Age ist definiert, als die Zeit, wie Lange der Cache bestehen soll. Sprich die Differenz seit dessen Auslieferung und nicht seit dem Start der Unix-Epoche. Dadurch weiß der Browser nicht, ob er nun die 1 Minute von dem Expire-Header verwenden soll, oder die (momentan) 39 Jahre des max-age-Headers.

Korrekt müsste der max-age-Wert eigentlich 60 sein, wenn er eine Minute cachen soll.

Der korrekte Source müsste somit so aussehen:

```
header('Cache-Control: public, max-age=' . ($expire-time()));
header('Expires: '.gmdate('D, d M Y H:i:s', $expire).' GMT');
```

Eine kurze Erklärung zu dem max-age-Header findet man [hier](http://www.xml.com/pub/a/2006/02/01/doing-http-caching-right-introducing-httplib2.html?page=2,) also max-age nicht die Differenz seit 1970 erwartet, sondern seit dessen Auslieferung.

MfG
Elite

--- _Originally created by anonymous on March 18th, 2009, at 05:15pm (ID 600)_