Zwischenspeicherung in Internet Explorer verhindern

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 234067 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
234067 How to prevent caching in Internet Explorer
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie Sie HTTP-Header verwenden können, um die Zwischenspeicherung von Webseiten in Internet Explorer zu steuern.

Mithilfe von Microsoft Internet Information Server (IIS) können Sie stark veränderliche oder besonders sicherheitsrelevante Seiten auf einfache Weise kennzeichnen, indem Sie ganz am Anfang der betreffenden ASP-Seiten (ASP = Active Server Pages) das folgende Skript einfügen:
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
				

Weitere Informationen

Ablaufdatum und der Header "Expires"

Es ist dringend zu empfehlen, dass alle Webserver ein Schema für das Ablaufdatum aller Webseiten verwenden. Es ist keine gute Vorgehensweise, wenn ein Webserver keine Ablaufinformationen mithilfe des HTTP-Antwortheaders "Expires" (Gültig bis) für alle Ressourcen angibt, die er an die anfordernden Clients zurückgibt. Die meisten Browser und Intermediate Proxies übermitteln heute solche Ablaufinformationen und nutzen sie, um die Effizienz der Kommunikation über das Netzwerk zu steigern.

Der Expires-Header sollte immer verwendet werden, um einen vernünftigen Zeitpunkt anzugeben, zu dem eine bestimmte Datei auf dem Server durch den Client aktualisiert werden sollte. Werden Seiten in regelmäßigen Abständen aktualisiert, sollte möglichst der nächste planmäßige Aktualisierungstermin als Ablaufdatum angegeben werden. Denken Sie beispielsweise an eine Nachrichtenseite im Internet, die täglich um 05:00 Uhr aktualisiert wird. Der Webserver für diese Nachrichtenseite sollte in diesem Fall einen Expires-Header mit dem Wert 05:00 Uhr (am folgenden Tag) zurückgeben. Wenn dies geschieht, muss der Browser erst dann wieder eine Verbindung zu dem Webserver aufbauen, wenn die Seite tatsächlich geändert worden ist.

Seiten, bei denen in nächster Zeit keine Änderungen zu erwarten sind, sollten mit einem Ablaufdatum versehen werden, das etwa ein Jahr in der Zukunft liegt.

In vielen Fällen gibt es auf Webservern gleich mehrere Seiten mit Informationen, die häufig und unverzüglich geändert werden müssen. Diese Seiten sollten von dem Server mit dem Wert "-1" im Expires-Header gekennzeichnet werden. Fordert der Benutzer eine solche Seite in der Zukunft an, übermittelt Internet Explorer in der Regel eine Anforderung des Typs "If-Modified-Since" (Falls-geändert-seit) an den Webserver, um festzustellen, ob die Seite seit dem letzten Besuch aktualisiert worden ist. Die Seite verbleibt jedoch im Zwischenspeicher auf der Festplatte (im Ordner "Temporäre Internetdateien") und wird in entsprechenden Situationen verwendet, ohne dass eine Verbindung zu dem Remote-Webserver aufgebaut wird. Zum Beispiel wenn mithilfe der Schaltflächen "VOR" und "ZURÜCK" auf den Verlauf zugegriffen wird oder sich der Browser im Offlinemodus befindet.

Der Header "Cache-Control"

Bestimmte Seiten sind ihrer Natur nach jedoch so veränderlich und sicherheitsrelevant, dass eine Zwischenspeicherung weder erforderlich noch wünschenswert ist. Für derartige Fälle unterstützt Internet Explorer den HTTP 1.1-Header "Cache-Control" (Zwischenspeicherungskontrolle), der jegliche Zwischenspeicherung einer bestimmten Webressource verhindert, wenn der Wert "no-cache" von einem HTTP 1.1-Server angegeben wird.

Da auf nicht im Zwischenspeicher befindliche Seiten erst dann zugegriffen werden kann, wenn der Browser wieder eine Verbindung zu dem Webserver herstellen kann, sollten Server den Header "Cache-Control" nur in besonderen Fällen verwenden. In den meisten Fällen ist die Verwendung von "Expires: -1" vorzuziehen.

Der Header "Pragma: No-Cache"

Unglücklicherweise können herkömmliche HTTP 1.0-Server den Header "Cache-Control" nicht verwenden. Internet Explorer unterstützt die spezielle Verwendung des HTTP-Headers "Pragma: no-cache", um die Abwärtskompatibilität mit HTTP 1.0-Servern zu gewährleisten. Wenn der Client über eine sichere Verbindung (https://) mit dem Server kommuniziert und der Server mit der Antwort den Header "Pragma: no-cache" zurückgibt, wird die Antwort von Internet Explorer nicht zwischengespeichert.

Der Header "Pragma: no-cache" war jedoch ursprünglich nicht für diesen Zweck gedacht. Gemäß dem Wortlaut der Spezifikationen für HTTP 1.0 und 1.1 ist dieser Header nur für einen Anforderungskontext definiert und nicht für Antworten vorgesehen. Dieser Header wurde ursprünglich für Proxyserver entwickelt, die verhindern könnten, dass bestimmte wichtige Anforderungen den Ziel-Webserver erreichen. Bei späteren Anwendungen ist der Header "Cache-Control" das geeignete Mittel zur Steuerung der Zwischenspeicherung.

Der META-Tag "HTTP-EQUIV"

HTML-Seiten ermöglichen die Verwendung einer speziellen Form des META-Tags "HTTP-EQUIV", der bestimmte HTTP-Header aus einem HTML-Dokument heraus festlegt. Es folgt ein kurzes Beispiel für eine HTML-Seite, in der sowohl "Pragma: no-cache" als auch "Expires: -1" verwendet werden:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
				
Der Header "Pragma: no-cache" verhindert die Zwischenspeicherung nur, wenn er über eine sichere Verbindung verwendet wird. Wird er in einer nicht sicheren Seite verwendet, wird der META-Tag "Pragma: no-cache" exakt so behandelt wie der Header "Expires: -1". Die Seite wird in diesem Fall zwar zwischengespeichert, aber als sofort abgelaufen gekennzeichnet.

HTTP-EQUIV-META-Tags des Typs "Cache-Control" werden in Internet Explorer 4 und 5 ignoriert und entfalten dort keinerlei Wirkung. Der Header "Cache-Control" muss mithilfe von HTTP-Headern (wie im vorstehenden Abschnitt zum Header "Cache-Control" beschrieben) angegeben werden.

Beachten Sie, dass die Verwendung standardmäßiger HTTP-Header dem Gebrauch von META-Tags vorzuziehen ist. META-Tags müssen in der Regel am oberen Ende des HTML HEAD-Bereichs erscheinen. In Verbindung mit dem META-Tag "Pragma HTTP-EQUIV" ist mindestens ein Problem bekannt. Weitere Informationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
222064 Tag "Pragma: No-cache" verhindert möglicherweise nicht, dass die Seite zwischengespeichert wird
Serveroptionen für die Zwischenspeicherung Wenn der Header "Cache-Control" auf einer Nicht-ASP-Seite verwendet werden muss, kann es erforderlich sein, in der Serverkonfiguration Optionen zu verwenden, durch die dieser Header automatisch hinzugefügt wird. Informationen zur Vorgehensweise zum Hinzufügen von HTTP-Headern zu Serverantworten für ein bestimmtes Verzeichnis finden Sie eventuell in Ihrer Serverdokumentation. In IIS 4 gehen Sie beispielsweise folgendermaßen vor:
  • Rufen Sie den Internetdienste-Manager auf.
  • Öffnen Sie mithilfe der Computer- und Dienstestruktur den Standard-Webserver (oder den Webserver, um den es jeweils geht), und suchen Sie dann das Verzeichnis, in dem die Inhalte gespeichert sind, für die der Header "Cache-Control" benötigt wird.
  • Rufen Sie das Dialogfeld Eigenschaften für dieses Verzeichnis auf.
  • Klicken Sie auf die Registerkarte HTTP-Header.
  • Klicken Sie auf die Schaltfläche Hinzufügen in der Gruppe Benutzerdefinierte HTTP-Header, und fügen Sie dann "Cache-Control" als Headername und "no-cache" als Headerwert hinzu.
Denken Sie daran, dass es nicht zu empfehlen ist, diesen Header global für den gesamten Webserver zu verwenden. Beschränken Sie dessen Verwendung auf Inhalte, die auf dem Client keinesfalls zwischengespeichert werden dürfen. Problem-Checkliste Wenn Sie die in diesem Artikel beschriebenen Techniken angewendet haben und immer noch Probleme mit der Zwischenspeicherung und Internet Explorer auftreten, gehen Sie diese praktische Checkliste Schritt für Schritt durch, bevor Sie sich an Microsoft wenden, um technische Unterstützung zu erhalten:
  • Verwenden Sie den Header "Cache-Control" in Verbindung mit der ASP-Eigenschaft "Response.CacheControl" oder über einen zurückgegebenen HTTP-Header? Dies ist der einzige Weg, um eine Zwischenspeicherung in Internet Explorer wirklich zu verhindern.
  • Verwenden Sie Internet Explorer 4.01 Service Pack 2 oder höher? In früheren Versionen von Internet Explorer gibt es keine Möglichkeit, eine Zwischenspeicherung vollständig zu verhindern.
  • Haben Sie sich vergewissert, dass HTTP 1.1 aktiviert ist und HTTP 1.1-Antworten an Internet Explorer zurückgibt? "Cache-Control"-Header sind in HTTP 1.0-Antworten unwirksam.
  • Falls Sie auf der Serverseite "CGI/ISAPI/Servlets" verwenden: Befolgen Sie die HTTP 1.1-Spezifikation exakt? Insbesondere in Bezug auf die CRLF-Terminierung von HTTP-Headern? Im Interesse einer bestmöglichen Leistung akzeptiert Internet Explorer in der Regel keine Antworten, die nicht der HTTP 1.1-Spezifikation entsprechen. Dies führt häufig dazu, dass Header ignoriert oder Protokolle zu unerwarteten Serverfehlern erstellt werden.
  • Ist die Schreibweise der HTTP-Header korrekt?

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
189409 INFO: Steuern der Zwischenspeicherung von Webseiten mit IIS 4.0
165150 Wie wird Pragma verwandt: No-cache mit II und IE
Weitere Informationen zu HTTP/1.1 finden Sie auf der folgenden RFC 2616-Website:
http://www.w3.org/Protocols/rfc2616/rfc2616.html

Eigenschaften

Artikel-ID: 234067 - Geändert am: Donnerstag, 20. Oktober 2005 - Version: 4.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 6.0
  • Microsoft Internet Explorer 6.0 Service Pack 1
Keywords: 
kbhowto kbcaching kbfaq KB234067
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com