no Cache
Tino23
- html
Hi
Wann setze ich welchen Befehl sinnvoll ein und muss ich dann diese Befehle
auf jede Seite einbinden, oder reicht es aus, wenn ich den Befehl nur auf
der Index-Seite einbinde? Gibt es nicht einen Befehl, der die Seite im
Cache mit der originalem im Web. Vergleicht, und bei Veränderrungen, dann
diese Seite neu lädt? Ist nämlich sonnt etwas unpraktisch, wenn ich dies
Befehle in eine Seite einbinde, wo viele Bilder enthalten sind, da diese
dann immer neu geladen werden. Was passiert wenn ich diesen Befehl auf
einer Seite, die nur Framesets enthält, einsetze?
<meta http-equiv="cache-control" content="no-cache">
Anweisung an den Browser: keinen Cache benutzen, sondern von Originalseite
laden.
<meta http-equiv="pragma" content="no-cache">
An Proxy-Agenten: Datei bitte nicht auf Proxy-Server speichern!
Hi
Wann setze ich welchen Befehl sinnvoll ein und muss ich dann diese Befehle
auf jede Seite einbinden, oder reicht es aus, wenn ich den Befehl nur auf
der Index-Seite einbinde?
Du setzt sie dann sinnvoll ein, wenn du dynamische Seiten hast, deren Inhalt sich schnell verändert, also beispielsweise eine Zeitanzeige. ;) Oder die Anzeige von Usern, die online sind. Oder Ergebnisseiten von Formulareingaben (wer das Formular mehrfach ausfüllt, sollte jeweils eine aktuelle Ergebnisseite erhalten, nicht die alte mit den alten Daten).
Meist ist es für Seiten aber absolut ok, wenn sie im Cache landen und von dort geladen werden. Für Bilder gelten diese Angaben AFAIK nicht.
Gibt es nicht einen Befehl, der die Seite im
Cache mit der originalem im Web. Vergleicht, und bei Veränderrungen, dann
diese Seite neu lädt?
Das machen die Browser dann, wenn eingestellt ist, daß sie bei jedem Seitenanzeigen die Aktualität der Seite prüfen sollen.
Beim IE: Extras -> Internetoptionen... -> Allgemein -> Temporäre Internetdateien -> Einstellungen... -> (X) Bei jedem Zugriff auf die Seite
Für dich beim Seitenentwickeln ist diese Einstellung besser. Der Browser lädt dann normalerweise immer gleich die Änderungen, die du im Editor abspeicherst. Für normale Surfer mit Modem ist die Standardeinstellung besser, weil das Seitenladen dann völlig ohne Kommunikation mit dem Server funktioniert, sofern die Cachedaten noch nicht abgelaufen sind.
- Sven Rautenberg
Hi auch,
Wann setze ich welchen Befehl sinnvoll ein und muss ich dann diese Befehle
auf jede Seite einbinden, oder reicht es aus, wenn ich den Befehl nur auf
der Index-Seite einbinde?
"Eigentlich" ist keiner dieser Befehle in der Form, wie Du ihn angegeben
hast, eine "schöne" Lösung.
Die Probleme dabei hast Du selbst bereits erkannt:
1. es müßte in jeder Datei stehen.
2. insbesondere auch in Dateien, in denen es gar nicht drin stehen darf
(Bilder etc.).
Gibt es nicht einen Befehl, der die Seite im Cache mit der originalem
im Web. Vergleicht, und bei Veränderrungen, dann diese Seite neu lädt?
"Einen Befehl"? Nein. Aber dies zu erledigen ist Aufgabe des Browsers, und
er tut das in Abhängigkeit von vielen verschiedenen Parametern. Zu diesen
gehören u. a.
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
Wie die Namen dieser Tags ja bereits aussagen, versucht HTML an dieser
Stelle, dem Browser zu sagen, er solle sich so verhalten, als habe er beim
Empfang des HTML-Dokuments zusätzlich im HTTP-Header, der "Verpackung" der
Seite, auch diese Informationen erhalten. Bei der Übertragung etwa eines
Bildes kannst Du mit diesem Trick nicht arbeiten, und bei HTML-Dokumenten
solltest Du es auch nicht tun. Deine HTML-Dokumente sollten sich mit ihrem
Inhalt befassen und nicht mit Details der zu verwendenden Übertragungsmoda-
litäten - das ist einfach nicht ihr Job.
Der Grund, weshalb solche Sprachelemente überhaupt Einzug in HTML gefunden
haben, ist meiner Meinung nach einzig derjenige, daß eben nicht jeder Sei-
tenbastler seinen eigenen Webserver konfigurieren darf. Wir sind heute aber
dieser Vorstellung wesentlich nähergekommen als noch vor 1-2 Jahren.
Du schreibst ja auch nicht in jedes HTML-Dokument hinein, daß es den
Content-type "text/html" hat, richtig? Aber bevor der Browser sich dafür
entscheidet, den Inhalt Deines HTML-Dokuments nach tags zu durchsuchen
und diese im Sinne von HTML zu interpretieren, muß ihn normalerweise [1]
vorher jemand darauf aufmerksam gemacht haben. Auch das ist ein HTTP-Header.
Welchen HTTP-Header für den Content-type Dein Server an den Browser sendet,
das stellst Du in Konfiguration des Webservers ein. Genauso kannst Du dort
für bestimmte Gruppen, Namensmuster, Teilbäume oder was auch immer einstel-
len, daß bestimmte weitere HTTP-Header mitgeschickt werden sollen - bei-
spielsweise eben auch solche, die das Verhalten diverser Caches beeinflus-
sen.
Würden Deine nicht-cachebaren Dateien direkt von einem CGI-Programm gene-
riert werden, dann wäre es sinnvollerweise die Aufgabe dieses Programms,
die entsprechenden Header zu generieren. Falls Du aber beispielsweise
Content auf dem Server generierst und in Form statischer HTML-Dokumente
ablegst, deren Inhalt sich aber ändern kann (das machen einige Web-Foren
beispielsweise so), dann hilft am ehesten, für diese Dateien durch den
Webserver entsprechende Header generieren und mitsenden zu lassen.
Viele Grüße
Michael
[1] ausgenommen den M$IE, der mit obskurem Voodoo selbst herauszufinden
versucht, wie er den Betrachter Deiner Seite durch hohnlachendes Igno-
rieren des von Deinem Server selbstverständlich korrekt gelieferten
Content-type am besten schikanieren kann.