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.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Ymir: Ransomware mit ausgeklügelter Verschleierung

Ymir nutzt fortschrittliche Verschleierungsmethoden. Sie verschlüsselt bestimmte Dateien auf einer Whitelist nicht, um einer Entdeckung…

4 Tagen ago

Fünf auf einen Streich: Baseus Nomos 5-in-1 Desktop Charger Qi2 140W

Das weltweit erste 5-in-1-Tischladegerät mit kabelloser Qi2-Aufladung und einziehbarem Kabel.

4 Tagen ago

RansomHub hebt Datenerpressung auf höhere Stufe

RansomHub kann per Fernverschlüsselung über ein einziges ungeschütztes Endgerät Daten im gesamten Netzwerk verschlüsseln.

4 Tagen ago

Shokz OpenRun Pro 2: Die perfekte Kombination aus Knochenschall und Air-Conduction Technik

Die neuen OpenRun Pro 2 von Shokz sind die neueste Weiterentwicklung der beliebten offenen Sportkopfhörer.…

6 Tagen ago

UPDF: PDF-Software zu einem Viertel des Preises von Adobe

PDF-Bearbeitungssoftware jetzt im Black Friday Sale mit 50 Prozent Rabatt!

7 Tagen ago

Neuer Bedarf an Workplace Services durch DEX und KI

ISG untersucht deutschen Workplace-Services-Markt. Digital Employee Experience (DEX) gilt als Schlüssel für neues Wachstum.

7 Tagen ago