Michael Schröpl: Puffer in Schleife

Beitrag lesen

Hi Andreas,

Das ist aber wirklich blöd

ganz im Gegenteil. Es ist wunderbar. :-)

Stell Dir mal vor, Du hast eine HTML-Seite, welche Realtime-Informationen enthält. Diese Seite darf nicht gecached werden. Sie enthält aber eine Vielzahl von kleinen Markierungs-Bildchen, deren Inhalt sich "nie" ändert wird. Diese Bildchen dürfen sehr wohl gecached werden - gerne auch ein paar Tage oder Wochen.
(Nimm das Self-Forum als Beispiel, das erfüllt exakt die beschriebenen Forderungen.)

Und wenn der Server dem Browser schon bei der ersten Auslieferung mitteilt, wie lange der Inhalt dieser Bildchen sich ganz bestimmt nicht ändern wird, dann kann sich der Browser sparen, mit einem HTTP-Request von mindestens 500 Bytes plus genauso viel an Antwort überprüfen zu lassen, ob dir 50 Bytes Cache-Inhalt weiterhin verwendbar sind oder nicht.

Ich wüßte da eine Menge Einsatzfälle innerhalb des Self-Portals ... die fast 40% HTTP-304-Zugriffe der Webalizer-Statistik müßte sich bei geeigneter Konfiguration in den Bereich von 10% drücken lassen, denke ich. (Und das allein würde 1-2 GB Traffic pro Monat sparen, wie ich in einem anderen Posting hier mal hochgerechnet hatte.)

Dagegen kann man ja evtl das Verfallsdatum in die Vergangenheit legen
(bei mir der sicherste no-cache Mechanismus!), das sollte doch was
bringen, oder?

Je nachdem. "Expires:" ist HTTP/1.0 - es schadet nichts, für die HTTP/1.1-Clients auch ein "Cache-Control" mitzusenden, was diesen (ebenso wie auf dem Web befindlichen Proxy-Servern!) sehr viel genauer beschreiben kann, was sie tun sollen und was sie bleiben zu lassen haben).

Bin mal gespannt ob sich dann an der Statistik was ändert!

Ich mache gerade so etwas ... und bin gespannt auf die Statistik von morgen früh ...

Eine Frage noch - das mit dem Verfallsdatum mache ich ja mit dem
HEADER in PHP. Wenn ich aber noch bevor der Header geschickt wird
die Daten logge, also im PHP-Code vor dem no-cache Header stehen
habe, bringt das auch nichts?

Wenn der Browser keinen HTTP-Request abfeuert, dann wird Dein PHP-Skript überhaupt nicht aktiviert und kann auch nichts loggen.

Viele Grüße
      Michael