PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : In welchen Fällen bekommt man bei Websites nur Browsercache statt wirklichem Inhalt?


Gast
2009-07-10, 15:49:19
Hallo!

Ich muss wohl erstmal den Threadtitel erklären, bevors weitergeht im Text.

Also die gängigen Browser cachen üblicherweise ja Websites (okay, Teile davon), um sie später schneller aufbauen zu können.

Welche Dateien fallen diesem Verhalten "zum Opfer", und wie kann man ein Neuladen erzwingen?

Ich habe auf einer Website nämlich ein paar Bilder mit Statistiken und Auswertungen darauf. Diese Bilder werden jeden Tag aktualisiert, sprich durch neue ersetzt (schließlich ändert sich deren Inhalt täglich). Die Bilder werden nicht über PHP. o.ä. generiert, sondern noch klassisch manuell per FTP hochgeladen.

Wenn jetzt die neuen Bilder genau dieselben Dateinamen wie ihre Vorgänger besitzen, könnte es dann sein, dass die üblichen Browser noch das alte Bild anzeigen?

Trifft das auf alle Mediendateien zu?

Könnte es sogar sein, dass der HTML-Code einer Seite gecacht wird?

Danke!

Coda
2009-07-10, 15:58:19
Ein Element wird immer neu geladen, solange der Webserver nicht mit "304 Not Modified" antwortet.

Das tut er dann, wenn sich die Datei im Zeitvergleich mit dem Client in einem bestimmten Zeitraum nicht verändert oder ein Hash sich verändert hat. Bei statischen Dateien funktioniert das eigentlich automatisch.

Und natürlich wird statisches HTML gecached. Dynamisch erzeugtes wird aber per default nicht als 304 ausgeliefert.

Bei mir werden bei PHP automatisch die folgenden HTTP-Header vom Webserver übertragen:
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache

Gast
2009-07-10, 16:24:33
Hallo Coda,

danke schonmal.

Ein Element wird immer neu geladen, solange der Webserver nicht mit "304 Not Modified" antwortet.


Hm Verständnisfrage:
Ein Webserver kann ja immer nur einen Statuscode pro Seitenaufruf übermitteln, richtig? Laut deiner Aussage wird ein Element (also alles!?) neugeladen, sobald der Status nicht 304 lautet.
Warum läd es hier im 3DCenter-Forum dann das Logo und die Grafiken im Header nie neu, obwohl sich das HTML (dank neuer Threads, Beiträge etc.) ständig ändert und der Statuscode so wohl kaum 304 lauten kann?



Und natürlich wird statisches HTML gecached. Dynamisch erzeugtes wird aber per default nicht als 304 ausgeliefert.


Wie ist es dann, wenn ich mein HTML extern (also außerhalb des Webservers) dynamisch erzeuge und es anschließend per FTP auf den Webserver lade? Dann ist es für den Webserver ja eigentlich auch ein statisches Dokument (schließlich pfuscht PHP nicht drin rum etc.). Sollte ich dann vorsichtshalber den von dir genannten Header anwenden? Oder muss ich mir keine sorgen machen und es greift deine erste Aussage? (sprich der hash hat sich verändert)?

Gruß

Coda
2009-07-10, 16:31:18
Die Bilder und das HTML sind doch völlig unabhängig. Das ist jeweils ein anderer Request.

Wie ist es dann, wenn ich mein HTML extern (also außerhalb des Webservers) dynamisch erzeuge und es anschließend per FTP auf den Webserver lade? Dann ist es für den Webserver ja eigentlich auch ein statisches Dokument (schließlich pfuscht PHP nicht drin rum etc.). Sollte ich dann vorsichtshalber den von dir genannten Header anwenden? Oder muss ich mir keine sorgen machen und es greift deine erste Aussage? (sprich der hash hat sich verändert)?
Der Hash wird praktisch nie verwendet, aber der Browser wird neu laden wenn sich das "Last Modified" auf dem Server von seinem Wert unterscheidet. Also in dem Fall normalerweise automatisch.