• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Seite soll nicht aus Zwischenspeicher geladen werden

extraSZeidler

Neues Mitglied
Hallo,

ich habe folgendes Problem,
wenn ich eine Änderung an meiner Website durchgeführt habe und wieder auf die Seite gehe, wird sie stets aus dem Zwischenspeicher hochgeladen. Um also die Veränderungen zu sehen, muss man jedes mal die Seite neu aktualisieren.
Könntet ihr mir sagen wie ich es mache, das die Seite beim Aufrufen nicht aus dem Zwischenspeicher geladen. wird bzw sich einmal vonallein aktualisiert?

(Wenn ich bei meta das einfüge: http-equiv="expires" content="0" so passiert garnichts.
Und mit: content="10" http-equiv="refresh" aktualisiert es zwar aller 10 Sekunden, aber dies ist unideal. Gut wäre, wenn es nur einmal am Anfang akutalisieren würde.)

Danke für eure Anworten!
 
Wenn die Seite nicht zwischengespeichert werden soll, kann man das dem Browser mitteilen mit dem Meta-Tag cache-control. Man schriebt folgende Zeile in den Header:
<meta http-equiv=”cache-control” content=”no-cache”>

Das teilt dem Browser mit nicht den Cache zu verwenden. Inwieweit sich die Browser daran halten, weiss ich nicht. Ich finde F5 drücken jetzt nicht so schlimm.

Quelle:HTML meta http-equiv Attribute
 
Ich finde F5 drücken jetzt nicht so schlimm.
Ist es auch nicht, wenn man weiß, dass man es drücken muss. Aber der unbedarfte Besucher der Seite weiß ja nicht, dass sich etwas geändert hat und bekommt dann die neuen Informationen eventuell nicht. Global alles auf No-Cache setzen ist irgendwie auch keine Lösung, denn dann holt der Browser immer alles vom Server, was die Last unnötig hoch macht.
 
Nach meinem Verständnis ist es so, das wenn sich nichts ändert, der Server den Status-Code 304 sendet, also der Browser den Cache verwendet, zum Beispiel neue Seite aber gleiches Favicon. Sehe ich auch oft in meinen Logs. Wenn eine Änderung stattgefunden hat, wird der Status-Code 200 gesendet und der Browser erhält die Datei.

Also von daher braucht man sich eigentlich gar nicht nicht darum zu kümmern.
Warum das jetzt bei ihm nicht so ist, kann ich nicht sagen, musste mich damit auch nie beschäftigen, aber vielleicht weiss ja jemand anderes mehr darüber.
 
Nach meinem Verständnis ist es so, das wenn sich nichts ändert, der Server den Status-Code 304 sendet
Aber doch nur, wenn der Browser ein Conditional GET sendet. Was, wenn der Browser denkt, das habe ich schon und gar keinen Request sendet? Dann passiert nämlich genau das im Eingangspost beschriebene, nämlich dass man die lokale Kopie bekommt.
 
Stimmt. Denkfehler von mir. Ich drück ja auch immer F5 nach Änderungen, geht ja gar nicht anders.
 
Der Code <meta http-equiv=”cache-control” content=”no-cache”> funktioniert nicht, hatte ich auch schon probiert.

"Aber der unbedarfte Besucher der Seite weiß ja nicht, dass sich etwas geändert hat und bekommt dann die neuen Informationen eventuell nicht."
Genau das ist der Grund, weshalb ich nach einer Lösung such!
Gibt es nich andere Ideen bzw Codes?
 
Ich hatte das Problem oft mit meiner CSS, auf die im head verwiesen wird. Nun habe ich die Referenz geändert von my.css nach my.css?date=20111126 und immer wenn ich die CSS ändere, dann auch das Datum. Dadurch ist es für den Browser eine neue URL und er holt es neu. Aber für normale Seiten ist das keine echte Alternative.
 
Alternative: Angabe der Cache-Zeiten im Header vom Server. Hierbei muss man jedoch genau wie beim o.g. meta-Tag sehr stark auf die Belange einzelner Browser achten. Vorlagen dazu gibt es dafür einige.

Die Variante von NetAktiv ist aber dennoch die Beste für solche Fälle.
 
NetAktiv schrieb:
Aber für normale Seiten ist das keine echte Alternative.

Warum nicht?

Noch einen Tick schicker wäre es vielleicht, keinen GET-Parameter zu nutzen, sondern eine „echte“ Pfadkomponente und nicht-externes Rewriting (etwa mod_rewrite beim Apache).

res/<timestamp>/my.cssmy.css
 
Zurück
Oben