Arbeitet man mit dynamischen Seiten, ist es oft störend, wenn ColdFusion-Seiten vom Browser gecached werden. Bei einem erneuten Seitenaufruf könnte es dann passieren, dass der Browser die alte Seite aus dem lokalen Cache holte und nicht vom Server. Das hat zur Folge haben, dass der Inhalt der Seite nicht mehr aktuell ist oder der ColdFusion-Server nicht mehr die volle Kontrolle über den Programmablauf hat.
Es gibt deshalb
verschiedenen Möglichkeiten das Cachen des Browsers zu verhindern.
Eine besteht darin, im HTTP-Header dem Browser mitzuteilen, die Seite nicht
zu cachen ist bzw. das Verfallsdatum für das übermittelte Dokument
so zu setzen, dass der Browser das Dokument für verfallen hält.
Mit dem <CFHEADER>-Tag hat man als ColdFusion-Programmierer die
Möglichkeit eigenen Felder im HTTP-Header des zum Browser gesendeten Dokumentes
anzulegen.
<CFHEADER NAME="Expires" VALUE="#now()#">
<CFHEADER NAME="Pragma" VALUE="no-cache">
Setzt man diese
beiden Zeile an den Anfang des CF-Templates, werden die beiden Felder Expires
und Pragma mit den angegebenen Werten im HTTP-Header angelegt. Diese
werden vom Browser dann interpretiert.
Das Expires-Feld nennt das Datum und die Uhrzeit, nachdem das Dokument
nicht mehr gültig ist und vom Browser neu geladen werden muss.
Das Pragma-Feld dient nicht nur der Cachekontrolle, sondern ist ein Mechanismus, um nicht standardisierte Felder zwischen Server und Client (und umgekehrt) auszutauschen. Der Empfänger des Feldes reagiert deshalb auch nur, wenn er den Befehl, der als Wert gesendet wird, versteht. In der Version HTTP 1.0 ist jedoch der Befehl no-cache standardisiert, womit der Server dem Client mitteilt, dass der Client das Dokument nicht cachen darf und stets die aktuelle Version vom Server holen soll.
Die zweite Möglichkeit der Cache-Kontrolle besteht in Form von speziellen Meta-Tags. die in den <Head>-Bereich des CFML-Templates integriert werden. Das sieht dann so aus:
<head>
<meta http-equiv='expires' content='Tue, 01 Jan 2000 00:00:00 GMT'>
<meta http-equiv='pragma' content='no-cache'>
</head>
Die Tags haben die gleiche Bedeutung wie die HTTP-Felder.
Beim Netzscape funktioniert das alles auch ziemlich gut, allerding hält sich der Internet-Explorer nicht immer an diese Angaben und cached oft trotzdem.