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.
Neueste Kommentare
Noch keine Kommentare zu Kontrolle des HTTP-Cachings mit Perl
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.