Malcolm Beck´s: If-Modified-Since und SEO

Beitrag lesen

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:

Startseite

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