hi,
UA(egal) steckt in den Request-Header die Frage:
"If-Modified-Since: date_time_x"
wobei date_time_x das Datum+Uhrzeit ist, was UA im Cache hat, weil UA die Seite schonmal requestet hat vor einiger Zeit.Der Webserver, der das unterstützt, schreibt in den Header:
"Last Modified: date_time_y"
wobei er für y das Dateidatum nimmt, sofern es eine HTML-Datei ist, die direkt aus dem Dateisystem gezogen wird. Wurde jedoch ein CGI-Script requestet, was zur Laufzeit erzeugt wurde, ist dieses Header-Field nicht vorhanden (dynamischer Content).
Vergleich doch mal die ganz einfachen Header-Ausgaben deiner Seite, die gesendet werden:
Date: Sat, 18 Jul 2009 09:17:15 GMT
Server: Apache
Last-Modified: Fri, 17 Jul 2009 18:56:44 GMT
Etag: "285ea8c1-121c-46eeb597b52c9"-gzip
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1822
Connection: close
Content-Type: text/html
http://rolfrost.de/cgi-bin/news.cgi
Date: Sat, 18 Jul 2009 09:18:46 GMT
Server: Apache
Cache-Control: no-cache;
Pragma: no-cache;
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5515
Connection: close
Content-Type: text/html;
Ich gehe mal stark davon aus, dass die Startseite eine Statiche Ressource ist.
Jedenfalls kann man auf deinem Server den von Edgar beschriebenen Apache-Bug sehen, da dein Server zwar Etag und Last-Modified sendet, die Ressourcen aber immer neu ausgeliefert werden (Status 200), also keine 304-Not-Modified, auch für deine CSS (Header auslesen).
Vielleicht hilft dir schon ein (ich weiss aber nicht, ob dass auch in Verbindung mit mod_deflate funktioniert, ich zippe meine Ressourcen mit PHP):
<FilesMatch "\.(html|htm|jpg|jpeg|gif|png|mp3|flv|mov|avi|html|swf|css|js|ico)$">
## Expires
ExpiresActive On
ExpiresDefault "access plus 10 years"
## Etag
FileETag MTime Size
## Cache-Control
Header set Cache-Control "public, no-transform"
</FilesMatch>
mfg