Kontrolle des HTTP-Cachings mit Perl

Hier nun die genaue Anleitung, wie Sie alles richtig machen. Da Sie die HTTP-Response-Header Ihrer dynamisch generierten Seite verändern, sollten Sie die wichtigste Regel bei der Netzwerkprogrammierung beherzigen: Was man rausschickt, muss perfekt sein. Das heißt insbesondere, dass das Datumsformat exakt dem Standard entsprechen muss, z. B.:


Date: Sun, 21 Jul 2002 08:12:13 GMT

Ein weiteres Format verwendet den UNIX-Befehl date(1):


Date: Sun Jul 21 08:12:13 EST 2002

Die Header werden abgeschickt, bevor irgendwelche HTML- oder XML-Inhalte ausgegeben werden, noch vor der Leerzeile, die diesen Inhalten vorausgeht. Man darf Header-Informationen in beliebiger Reihenfolge schicken.

Der Date-Header ist in Bezug auf das Caching allerdings nicht relevant. Er datiert nur die Nachricht, nicht die URL, die ausgegeben wird. Beispielsweise fügt ihn das Perl CGI-Modul automatisch hinzu. Vergessen Sie diesen Punkt also.

Unsere schärfste Waffe ist der HTTP-Header Cache-Control. Wenn man ihn wie folgt einstellt


Cache-Control: no-cache

wird die an den Browser geschickte URL niemals in einem Cache landen. Damit wäre das Problem gelöst. Falls durch einen unglücklichen Zufall Ihre Anwendung ohne diesen Header ausgeführt wurde, besteht allerdings eine winzige Möglichkeit, dass irgendwo auf der Welt noch eine alte Kopie herumgeistert, die Ihnen Schwierigkeiten bereiten könnte. Doch wenn Sie nicht gerade Amazon.com sind, ist dies ziemlich unwahrscheinlich.

Um Caching zu nutzen, aber eine Rückversicherung zu haben, verwenden Sie den Expires-Header. Dieser Header legt das Datum fest, an dem abgespeicherte Kopien der Seite aus dem Cache entfernt werden müssen. Für eine einwöchige Blitzkampagne in den Medien könnte man ein Verfallsdatum nach sieben Tagen festsetzen. Wenn man ein Datum in der Vergangenheit wählt, hat dies denselben Effekt wie


Cache-control: no-cache.
Expires: Sun, 28 Jul 2002 08:12:13 GMT

Für Ihre dynamischen Webseiten ist Last-Modified der Header, den Sie unbedingt einfügen sollten. Normalerweise ist dies ein Zeitstempel vom Dateisystem. Da Ihre Seite dynamisch erzeugt wurde, fehlt ihr jedoch solch ein Zeitstempel . Er muss also extra programmiert werden. Dies ist auch der Header, der dem If-Modified-Since-Header vom Browser entspricht. Man sollte sich in jedem Fall die Mühe machen, diesen Header hinzuzufügen – selbst wenn Perl CGI dies nicht automatisch für Sie tut. Hier ein Beispiel:


Last-Modified: Thu, 25 Jul 2002 08:12:13 GMT

Setzen Sie das Änderungsdatum auf „now“, und alle Anfragen von Browsern (und Proxys mit Caching-Funktion) wissen Bescheid, dass die Seite bei deren Erstellung geändert wurde.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Kontrolle des HTTP-Cachings mit Perl

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *